0

我试图创建一个包含大约 20 个“兴趣”的复选框表,让用户可以随意选择。我有一个具有 HABTM 关系的兴趣和用户模型(通过“interests_users”连接表)。

所以:

  1. 我如何用 20 个左右的预设兴趣的名称播种兴趣表(只有一个名称:字符串属性)?
  2. 我如何在 ERB 表单中显示这些,允许用户选择任意数量的?

注意..我使用 Wicked gem 创建一个多步骤表单(<-工作得很好)

4

2 回答 2

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

在您的控制器中,您将能够更新您的用户模型的属性。请务必确保您能够批量分配您的参数,并记住 HTML 规范对未选中复选框的限制(阅读标题为“ Gotcha ”的部分)。

编辑:修复了一些与语法相关的拼写错误。

于 2012-05-11T20:23:14.347 回答
1
<% for interest in Interest.find(:all) %>
  <%= check_box_tag "user[interest_ids][]", interest.id, @user.interests.include?(interest) %>
  <%= interest.name %>
<% end %>
于 2012-05-11T20:09:25.533 回答