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