我试图创建一个大约20个“兴趣”的复选框表,让用户可以根据需要选择多个。我有兴趣&具有HABTM关系的用户模型(通过“interests_users”连接表)。
所以:
注意..我使用Wicked gem创建一个多步形式(< -working great)
答案 0 :(得分:2)
如果您使用的是Rails> = 3.0,那么请查看db / seeds.rb文件。您可以将任意Ruby代码放在该文件中,该文件通过Rake任务rake db:seed
运行。您可以添加许多行,例如Interest.create :name => 'World Domination'
。
这个将取决于您如何设置表单。关掉你给出的信息,我会做这样的事情:
<%= form_for @user do |f| -%>
<% Interest.all.each do |i| -%>
<div><%= i.name -%> <%= check_box_tag 'user[interests][]', i.id, @user.interests.detect{|ui| ui.name == i.name} -%></div>
<% end -%>
<% end -%>
在您的控制器中,您可以只更新用户模型的属性。请务必确保您能够批量分配参数,并且还要记住HTML规范对未选中复选框的限制(请阅读标题为“Gotcha”的部分。)
编辑:修复了一些与语法相关的拼写错误。答案 1 :(得分:1)
<% for interest in Interest.find(:all) %>
<%= check_box_tag "user[interest_ids][]", interest.id, @user.interests.include?(interest) %>
<%= interest.name %>
<% end %>