我可以在控制器中设置默认命名空间路由

时间:2012-04-03 09:46:33

标签: ruby-on-rails ruby-on-rails-3 routes

我正在添加一个带有几个控制器的管理命名空间,所以我们的东西可以编辑后端的内容。

例如,我有一个Book模型和一个允许访客浏览的books_controller。现在我添加admin/books_controller,为管理员提供编辑书籍的后端。

  namespace :admin do
    resources :books, except: :show
  end
  resources: books, only: [:index, :show]

目前,对于admin_books_controller视图中的所有link_toform_for,我需要添加名称空间:admin,如下所示:

<%= form_for([:admin, @post]) do |f| %>

(在普通控制器中它将是form_for(@post)

它有点重复,我想知道我是否可以在管理控制器中的某处设置它,以便该控制器中的所有link_to都将在admin命名空间中路由?

1 个答案:

答案 0 :(得分:1)

如果您将模型的范围限定在命名空间下,那么它应该自动反映在表单生成器中。

因此rails g model admin/book之类的东西会生成嵌套在admin命名空间下的书籍模型。

如果你在那个对象上面构建一个表单,像form_for Admin::Book.new这样的东西应该针对任何适当的嵌套路由,例如:

namespace :admin do
  resources :books
end

我希望这能说明你可以尝试的方向。

最好的问候。