0

由于各种原因,我需要避免传统的嵌套形式(嵌套在将字段视为页面主要模型的子组的意义上),但仍希望将字段与索引样式命名组合在一起,所以我拥有这个:

<%= simple_fields_for :crate_request do |ff| %>
 <%= ff.input :_create, :label => "crate needed", :as => :boolean %>
 <%= ff.input :details, :as => :text %>
<% end %>

呈现的字段按预期命名(名称为params[:crate_request][:details]),并且在我提交带有验证错误的表单并且它必须返回重新呈现之前,一切看起来都很好。这些字段不会预先填充存储在params哈希中的提交值。虽然我使用的是 simple_form,但它似乎不仅仅是一个 simple_form 问题。原生的 Rails 助手似乎也做同样的事情。

所以问题是:有没有办法让这些字段再次从参数哈希中自动预先填充,而不必手动设置每个字段的值params

4

2 回答 2

1

您只需将一些对象作为额外参数传递给simple_fields_for.

由于表单构建器希望对象具有字段访问器作为方法,但您只有一个哈希 ( params[:create_request]),您可以使用OpenStruct它创建一个对象,它将丢失的方法调用转换为哈希查找。

最终的解决方案将如下所示:

<%= simple_fields_for :create_request, OpenStruct.new(params[:create_request]) do |ff| %>
  ...
<% end %>
于 2013-05-03T17:14:12.443 回答
-1

代替

<%= ff.input :details, :as => :text %>

经过

<%= input :details, :as => :text %>
于 2013-05-03T16:53:05.857 回答