Ruby on rails Rails-如何存储;“你有很多”;数据库中的复选框关联?

Ruby on rails Rails-如何存储;“你有很多”;数据库中的复选框关联?,ruby-on-rails,ruby,checkbox,associations,has-many,Ruby On Rails,Ruby,Checkbox,Associations,Has Many,我有表用户和表类别 这两个表之间的关系: 用户有许多类别 类别属于:用户 我想在用户的(标准)编辑页面上显示带有复选框的类别列表。当这个用户选中一些复选框时,我想保存它们,然后在下次打开页面时显示为选中 但是如何在视图中呈现复选框呢?以及如何存储有关用户在数据库中签入哪些复选框的信息? 我的第一个想法是用user\u id和category\u id创建一个类似user\u categories的表,但不确定这种方法有多有效 现在执行此任务的最佳方式是什么?您可能希望使用has\u many

我有表用户和表类别

这两个表之间的关系:

  • 用户
    有许多类别
  • 类别
    属于:用户
我想在用户的(标准)编辑页面上显示带有复选框的类别列表。当这个用户选中一些复选框时,我想保存它们,然后在下次打开页面时显示为选中

但是如何在视图中呈现复选框呢?以及如何存储有关用户在数据库中签入哪些复选框的信息? 我的第一个想法是用
user\u id
category\u id
创建一个类似user\u categories的表,但不确定这种方法有多有效


现在执行此任务的最佳方式是什么?

您可能希望使用
has\u many:through
实现多对多关系,而不是让类别属于一个用户(意味着一个类别只能有一个用户,这是您想要的吗


阅读以开始。完成后,可以使用帮助器轻松实现复选框。

除了引入强参数外,最近没有太大变化。您仍然希望使用
has_和\u belien_many
has_many:through
关系,然后只需将ID分配给您需要设置一个表单,该表单传递所选ID的数组,以便它们像
{user:{category_id=>[1,2,3]}
一样进入

class User < ActiveRecord::Base
  has_and_belongs_to_many :categories
end

您可以采用habtm方法

然后在用户表单部分中,添加字段

 <div class="field"> 
   <%= f.label "Categories" %><br /> 
   <% for category in Category.all %> 
   <%= check_box_tag 'user[category_ids][]', category.id, 
  @user.category_ids.include?(category.id), :id => dom_id(category) %> 
   <%= label_tag dom_id(category), category.name, :class => "check_box_label" %> 
   <% end %> 
 </div>


dom_id(类别)%%> “复选框标签”%>
其中category.name是类别模型中的字段

这应该行得通

然后在用户索引视图中

<% @users.each do |user| %>
<%= user.categories.collect(&:name).join(",") %>
<% end %>

它应该显示用户的关联类别。别忘了在您的用户模型属性字段中添加:category\u id。否则将弹出“海量分配安全性”

<% @users.each do |user| %>
<%= user.categories.collect(&:name).join(",") %>
<% end %>