由于各种原因,我需要避免使用传统的嵌套表单(嵌套在将字段视为页面主模型的子组的意义上),但仍希望将字段与索引样式命名保持在一起,所以我有这个:
<%= 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哈希中自动填充,而不必手动设置params
中每个字段的值?
答案 0 :(得分:1)
您只需要将一些对象作为额外参数传递给simple_fields_for
。
由于表单构建器期望对象具有字段访问器作为方法,但您只有一个哈希(params[:create_request]
),您可以使用OpenStruct
创建一个可以转换缺失方法的对象调用哈希查找。
最终解决方案看起来像这样:
<%= simple_fields_for :create_request, OpenStruct.new(params[:create_request]) do |ff| %>
...
<% end %>
答案 1 :(得分:-1)
替换
<%= ff.input :details, :as => :text %>
通过
<%= input :details, :as => :text %>