我正在添加一个带有几个控制器的管理命名空间,所以我们的东西可以编辑后端的内容。
例如,我有一个Book
模型和一个允许访客浏览的books_controller
。现在我添加admin/books_controller
,为管理员提供编辑书籍的后端。
namespace :admin do
resources :books, except: :show
end
resources: books, only: [:index, :show]
目前,对于admin_books_controller视图中的所有link_to
和form_for
,我需要添加名称空间:admin
,如下所示:
<%= form_for([:admin, @post]) do |f| %>
(在普通控制器中它将是form_for(@post)
)
它有点重复,我想知道我是否可以在管理控制器中的某处设置它,以便该控制器中的所有link_to
都将在admin命名空间中路由?
答案 0 :(得分:1)
如果您将模型的范围限定在命名空间下,那么它应该自动反映在表单生成器中。
因此rails g model admin/book
之类的东西会生成嵌套在admin命名空间下的书籍模型。
如果你在那个对象上面构建一个表单,像form_for Admin::Book.new
这样的东西应该针对任何适当的嵌套路由,例如:
namespace :admin do
resources :books
end
我希望这能说明你可以尝试的方向。
最好的问候。