如何在Rails中设置哈希表单?

B S*_*ven 9 parameters hash ruby-on-rails form-for ruby-on-rails-3

我有一些数据与散列中的模型相关联.散列在控制器中生成:@hash.

为此数据创建表单的正确方法是什么?

我想出了以下代码:

  <% @hash.keys.each do |key| %>
    <div class="field">
      <%= f.label key %><br />
      <%= text_field_tag "hash_" + key, @hash[key] %> 
    </div>
  <% end %>
Run Code Online (Sandbox Code Playgroud)

这会生成表单,但它会将每个哈希项创建为表单中的单独变量.这似乎不是提交数据的正确方法.我想将数据作为哈希值返回,并使用它来访问它params[:hash].

做这个的最好方式是什么?

使用Rails 3.07,Ruby 1.9.2.

谢谢.

编辑:我应该说清楚.此代码位于为模型生成的表单内.因此,表单需要提交模型的所有字段,以及上面的哈希.

nem*_*esv 12

根据本文,您应该将text_field_tag中的名称更改为

<% @hash.keys.each do |key| %>
  <div class="field">
    <%= f.label key %><br />
    <%= text_field_tag "hash[" + key + "]", @hash[key] %> 
  </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

  • 有关这方面的更多信息:[未完成的参数命名约定](http://guides.rubyonrails.org/form_helpers.html#understanding-parameter-naming-conventions) (2认同)