rails 3 has_many:通过带复选框的表单

pca*_*asa 9 ruby-on-rails ruby-on-rails-3

以前问过相似的.

Rails 3 has_many:通过Form

但无法从用户表单中获得与就业关系的关系.

已经阅读http://www.justinball.com/2008/07/03/checkbox-list-in-ruby-on-rails-using-habtm/http://millarian.com/programming/ruby-on-rails/quick-tip-has_many-through-checkboxes /(我真的希望它有效.)

表格提交,但仅在就业方面创建空白记录.

<%= form_for @user do |f| %>
...
<p>
   <% Company.all.each do |company| %>
        <%= check_box_tag :company_ids, company.id, @user.companies.include?(company), :name => 'user[company_ids][]' -%>
     <%= label_tag :companies_ids, company.id %>
   <% end %>
</p>
<p><%= f.submit %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)

Fra*_*ter 15

在表单中包含隐藏字段标记,以确保在未选中任何复选框时提交某些内容.这应该在<%end%>之后起作用:

<%= hidden_field_tag "user[company_ids][]" %>
Run Code Online (Sandbox Code Playgroud)

  • 这是处理"no checkboxes selected"用例的好方法.关于在has_many:through关系上处理多个复选框的许多示例都没有提到这一点. (5认同)

chr*_*ais 10

我可能错了,但我认为check_box_tag函数的第一个arg是输入的实际名称,所以不是

check_box_tag :company_ids, company.id, @user.companies.include?(company), :name => 'user[company_ids]'
Run Code Online (Sandbox Code Playgroud)

你可以试试像

check_box_tag 'user[company_ids]', company.id, @user.company_ids.include?(company.id)
Run Code Online (Sandbox Code Playgroud)

如果有效,请告诉我!

  • 如果您有多个复选框,请确保第一个arg是'user [company_ids] []',以便表单名称是唯一的.否则它将只取最后一个复选框值. (2认同)