我试图创建一个包含大约 20 个“兴趣”的复选框表,让用户可以随意选择。我有一个具有 HABTM 关系的兴趣和用户模型(通过“interests_users”连接表)。
所以:
- 我如何用 20 个左右的预设兴趣的名称播种兴趣表(只有一个名称:字符串属性)?
- 我如何在 ERB 表单中显示这些,允许用户选择任意数量的?
注意..我使用 Wicked gem 创建一个多步骤表单(<-工作得很好)
我试图创建一个包含大约 20 个“兴趣”的复选框表,让用户可以随意选择。我有一个具有 HABTM 关系的兴趣和用户模型(通过“interests_users”连接表)。
所以:
注意..我使用 Wicked gem 创建一个多步骤表单(<-工作得很好)
如果您使用的是 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 ”的部分)。
编辑:修复了一些与语法相关的拼写错误。
<% for interest in Interest.find(:all) %>
<%= check_box_tag "user[interest_ids][]", interest.id, @user.interests.include?(interest) %>
<%= interest.name %>
<% end %>