在Rails中使用与命名空间中的嵌套资源相同的form和form_for

时间:2015-01-05 03:38:31

标签: ruby-on-rails

我有一个可以使用和不使用命名空间访问的资源。

# 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

1 个答案:

答案 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 %>