我有一个可以使用和不使用命名空间访问的资源。
# routes.rb
resources :foo
namespace :admin do
resources :foo
end
我想在两种情况下都使用相同的_form
部分,但form_for
需要一个不同的参数,具体取决于控制器。
我应该在控制器中设置form_for
参数吗?
# foo_controller.rb
def set_foo
@form_for_arg = @foo
end
# admin/foo_controller.rb
def set_foo
@form_for_arg = [:admin, @foo]
end
答案 0 :(得分:2)
将表单的常用功能放在partial中,并将其包装在单独的form_for
中:
<%= form_for [:admin, foo] do |f| %>
<%= render "foos/form", f: f %>
<% end %>
和
<%= form_for [foo] do |f| %>
<%= render "foos/form", f: f %>
<% end %>