如何创建rails复选框表单?

时间:2012-05-11 19:38:33

标签: ruby-on-rails activerecord associations

我试图创建一个大约20个“兴趣”的复选框表,让用户可以根据需要选择多个。我有兴趣&具有HABTM关系的用户模型(通过“interests_users”连接表)。

所以:

  1. 我如何为兴趣表(只有一个名字:字符串属性)播种,其中包含20个左右的预设兴趣名称?
  2. 我如何以ERB形式显示这些内容,以便用户选择他们喜欢的数量?
  3. 注意..我使用Wicked gem创建一个多步形式(< -working great)

2 个答案:

答案 0 :(得分:2)

  1. 如果您使用的是Rails> = 3.0,那么请查看db / seeds.rb文件。您可以将任意Ruby代码放在该文件中,该文件通过Rake任务rake db:seed运行。您可以添加许多行,例如Interest.create :name => 'World Domination'

  2. 这个将取决于您如何设置表单。关掉你给出的信息,我会做这样的事情:

    <%= 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 -%>
    
  3. 在您的控制器中,您可以只更新用户模型的属性。请务必确保您能够批量分配参数,并且还要记住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 %>