在 Rails 中使用相同的形式和 form_for 以及命名空间中的嵌套资源

Using same form and form_for in Rails with nested resources in namespace

我有一个资源,无论有没有命名空间都可以访问。

# 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

将表格的共同特征放在partial里面,把它包裹在individual里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 %>