2013-05-03 57 views
0

由于各种原因,我需要避免传统的嵌套表单(嵌套在像处理页面主模型的子组那样的字段意义上),但仍然希望保留字段与指数型命名组合在一起,所以我有这样的:预期(与像params[:crate_request][:details]名)使用Rails的没有模型的表单助手

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

呈现的字段命名,一切看起来很好,直到我提交表单验证错误,它有回来重新渲染。这些字段不会预填充存储在params哈希中的提交值。虽然我使用的是simple_form,但它似乎不是simple_form问题。原生的Rails助手似乎也这样做。

所以问题:有没有办法让字段自动从params哈希预填充,而无需手动设置每个字段的值从params

回答

1

你只需要通过一些对象作为一个额外的参数来simple_fields_for

由于表单构建器期望对象具有字段访问器作为方法,但只有散列(params[:create_request]),因此可以使用OpenStruct创建一个将缺少的方法调用转换为散列查找的对象。然后

最终的解决方案将是这个样子:

<%= simple_fields_for :create_request, OpenStruct.new(params[:create_request]) do |ff| %> 
    ... 
<% end %> 
+0

辉煌!正是我需要的。谢谢! – 2013-05-03 17:33:04

-1

更换

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

通过

<%= input :details, :as => :text %> 
+0

这似乎并不工作,为'本身input'不是一个有效的方法... – 2013-05-03 17:33:41