为HABTM生成多个选择 - simple_form和RoR

时间:2012-11-15 03:56:48

标签: ruby-on-rails simple-form

使用simple_form并为HABTM关联模型创建字段时,我们会获得一个接受多个选项的选择框。

有多种方法可以让多个选择框接受一个选项吗?

如果我们有类别,例如:

Category1 => <select>options...</select>
Category2 => <select>options...</select>
Category3 => <select>options...</select>
etc...

2 个答案:

答案 0 :(得分:1)

假设有以下型号:

class Business < ActiveRecord::Base
    has_and_belongs_to_many :categories

class Category < ActiveRecord::Base
    has_and_belongts_to_many :businesses

您可以使用以下rails帮助程序为每个类别显示一个选择框。

- @business.categories.each do |c|
      = f.collection_select :category_ids, Category.all, :id, :name, {:selected => c.id}, {:name => 'business[category_ids][]'}

然后您可以使用javascript动态创建新的选择框。 This railscast explains the basics.

答案 1 :(得分:0)

在simple_form_for中,例如states / regions

class State < ActiveRecord::Base
  has_and_belongs_to_many :regions

(为了清晰起见,省略了不必要的表格元素)

<%= simple_form_for @state do |f| %>
    <%= f.association :regions, as: :check_boxes, collection: Region.all.sort, :selected => @state.regions, :label => false %>
<% end %>

这将显示所有区域(显然您可以过滤它)作为复选框列表,已记录的区域被选中