在没有模型的情况下使用Rails的表单助手

时间:2013-05-03 16:38:49

标签: ruby-on-rails simple-form form-for

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

<%= 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中每个字段的值?

2 个答案:

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