Ruby on rails 如何创建rails复选框表单?

Ruby on rails 如何创建rails复选框表单?,ruby-on-rails,activerecord,associations,Ruby On Rails,Activerecord,Associations,我正在尝试创建一个包含大约20个“兴趣”的复选框表,让用户选择他们想要的数量。我有一个具有HABTM关系的兴趣和用户模型(通过“兴趣用户”联接表) 因此: 如何使用20个左右的预设兴趣的名称为兴趣表种子(只有一个name:string属性) 如何在ERB表单中显示这些内容,允许用户选择任意数量的内容 注。。我正在使用邪恶宝石创建一个多步骤表单( 如果您使用的是Rails>=3.0,那么请查看db/seeds.rb文件。您可以在该文件中放入任意Ruby代码,您可以通过Rake任务Rake db

我正在尝试创建一个包含大约20个“兴趣”的复选框表,让用户选择他们想要的数量。我有一个具有HABTM关系的兴趣和用户模型(通过“兴趣用户”联接表)

因此:

  • 如何使用20个左右的预设兴趣的名称为兴趣表种子(只有一个name:string属性)
  • 如何在ERB表单中显示这些内容,允许用户选择任意数量的内容
  • 注。。我正在使用邪恶宝石创建一个多步骤表单(
    
    
    
    
  • 如果您使用的是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规范对未选中复选框的限制(请阅读标题为“”)的部分)

    编辑:修复了一些语法相关的打字错误

  • 如果您使用的是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规范对未选中复选框的限制(请阅读标题为“”)的部分)


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

    我将所有兴趣都存储在一个数组中。我如何在数组中播种,这样我就不必做20次“兴趣。创建:名称=>‘世界主宰’”。下面的工作可以吗?兴趣。创建:名称=>[“艺术运动”、“艺术和手工艺”…]
    [“冒险运动”、“艺术和手工艺”].each{i | Interest.create:name=>i}
    在结束
    -%>
    erb插入时,
    -
    做什么?@SagarPandya它控制生成的输出中的空白。下面是一个更详细的答案:我将所有的兴趣存储在一个数组中。我如何为数组种子,这样我就不必做了“Interest.create:name=>‘世界主宰’”20次以上……以下内容是否有效?Interest.create:name=>[“职业体育”、“艺术与手工艺”…]
    [“冒险体育”、“艺术与手工艺”]。每个{i | Interest.create:name=>i}
    -在结束
    -%>
    erb插入时做什么?@SagarPandya它控制生成的输出中的空白。这里有一个更详细的答案:我将所有兴趣存储在一个数组中..我如何为数组种子,这样我就不必执行“兴趣.创建:名称=>”世界主宰““20次以上……以下工作是否有效?兴趣。创建:名称=>[“专业运动”、“艺术和手工艺”…]数组。每个都做|兴趣|名称|兴趣。创建(:名称=>兴趣|名称)endI将所有兴趣存储在一个数组中..我如何为数组种子,这样我就不必做“兴趣。创建:名称=>'世界主宰'”20次以上…以下工作是否会?Interest.create:name=>[“Adevnture sports”,“Arts and crafts”…]数组。每个do | Interest|u name | Interest.create(:name=>Interest|u name)结束