更改某些操作的路径

时间:2014-01-14 10:13:21

标签: ruby-on-rails

我想只更改控制器某些操作的路径。

例如,我在ExampleController上执行了以下操作。

  • 创建
  • 修改
  • 破坏
  • 更新
  • 索引
  • 显示

我希望我可以在路径new上执行createdeleteupdate/admin/example/个操作,然后完成剩下的工作({{1} }和index)可在show上找到。

当然,我可以通过添加以下新路线来实现这一目标:

/example

但我不想为每个控制器都这样做。我尝试了以下操作:

match "/admin/example/:id/destroy", to: "example#destroy", via: "destroy"

这似乎有效,但每当我想创建一个新的scope '/admin' do resources :example, only: [:new, :edit, :create, :update, :destroy] end resources :example, only: [:index, :show] 对象时,它会给我以下错误:

example

它也会在网址No route matches [POST] "/example"而不是/example

上结束

我是在正确的轨道还是我在这里做了一些完全错误的事情。我想将所有基于/admin/example的操作保存在同一个控制器中。

更新:我根据@apneadiving的回答尝试了以下内容:

example

但是,在呈现表单时,他的结果是<%= form_for [:admin, @example] do |f| %> <% end %> ,并带有消息:

NoMethodError

1 个答案:

答案 0 :(得分:0)

您必须向表单提供详细信息。

form_for @post正在寻找[POST] "/example"

所以使用:

form_for [:admin, @post]