当使用 simple_form 并为 HABTM 关联模型创建字段时,我们会获得一个接受多个选项的选择框。
有没有办法让多个选择框接受一个选项?
如果我们有类别,例如:
Category1 => <select>options...</select>
Category2 => <select>options...</select>
Category3 => <select>options...</select>
etc...
当使用 simple_form 并为 HABTM 关联模型创建字段时,我们会获得一个接受多个选项的选择框。
有没有办法让多个选择框接受一个选项?
如果我们有类别,例如:
Category1 => <select>options...</select>
Category2 => <select>options...</select>
Category3 => <select>options...</select>
etc...
假设以下模型:
class Business < ActiveRecord::Base
has_and_belongs_to_many :categories
class Category < ActiveRecord::Base
has_and_belongts_to_many :businesses
您可以使用以下 rails helper 为每个类别显示一个选择框。
- @business.categories.each do |c|
= f.collection_select :category_ids, Category.all, :id, :name, {:selected => c.id}, {:name => 'business[category_ids][]'}
然后您可以使用 javascript 动态创建新的选择框。这个 railscast 解释了基础知识。
在 simple_form_for 例如州/地区内
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 %>
这会将所有区域(显然您可以过滤它)显示为复选框列表,并选择那些已录制的区域