如何在form_tag块中创建自定义哈希

时间:2014-02-12 02:37:28

标签: ruby-on-rails ruby-on-rails-3

我有一个Rails 3应用程序,我正在尝试从单个表单创建多个数据库记录。

我有一个模型,内容,作为body和id的属性。我有一个视图,显示一个列出所有记录的表单,并在其旁边放置一个复选框(并将值设置为true / checked)。用户可以选择取消选择他们不想要的内容记录。

<%= form_tag 'contents' do %>
  <% @contents.each do |content| %>
    <%= label_tag content.body %>
    <%= check_box_tag content.id, content.body, true %>
  <% end %>
  <br />
  <%= submit_tag "Next" %>
<% end %>

当这个形式出现时,我会看到这样的参数:

{"utf8"=>"✓",
 "authenticity_token"=>cooltoken",
 "1"=>"asdfasfdf",
 "2"=>"asdfasdf adf",
 "3"=>"asdf asdf asdf",
 "commit"=>"Next",
 "action"=>"create",
"controller"=>"contents"}

但我想要的是一个看起来像这样的params哈希:

{"utf8"=>"✓",
 "authenticity_token"=>"cooltoken",
 'user_selections' => {
                      "1"=>"asdfasfdf",
                      "2"=>"asdfasdf adf",
                      "3"=>"asdf asdf asdf",
                     } 
"commit"=>"Next",
"action"=>"create",
"controller"=>"contents"}

如何将内容信息推送到自己的哈希(我在上面调用'user_selection'哈希)?

1 个答案:

答案 0 :(得分:2)

试试这个:

<%= check_box_tag content.id, content.body, true, { name: "user_selections[#{content.id}]" } %>