【发布时间】:2014-06-21 13:55:32
【问题描述】:
我有两个模型。场地和类别。它们相互关联为has_and_belongs_to_many
类别是预先填充的,并且在我想要显示多选的形式中,以允许在添加场地时选择场地的类别。
venue.rb
class Venue < ActiveRecord::Base
has_and_belongs_to_many :categories
end
category.rb
class Category < ActiveRecord::Base
has_and_belongs_to_many :venues
end
加入表格
create_table "categories_venues", id: false, force: true do |t|
t.integer "category_id", null: true
t.integer "venue_id", null: true
end
add_index :categories_venues, ["category_id", "venue_id"]
大多数在线示例展示了如何从另一个模型创建模型。我无法弄清楚如何拥有一个多选选项,用户可以在其中选择一个或多个类别并自动保存。
我需要在控制器中使用builder 吗?并添加accepts_nested_attributes_for ?
我是 Rails 的新手,也一直在尝试搜索和阅读文档。
控制器
def new
@venue = Venue.new
@categories = Category.all.order('name ASC')
@countries = Country.all.order('name ASC').limit(25)
@regions = Region.all.order('name ASC').limit(25)
@cities = City.all.order('name ASC').limit(25)
#render plain: @categories.inspect
end
查看
<div class="form-group">
<%= f.label :parent_id, "Categories:<span class='mandatory'>*</span>".html_safe,:class => 'col-sm-2 control-label' %>
<div class="col-sm-3">
<%= f.collection_select(:category_ids, @categories, :id, :name, { :prompt => true }, { :class => 'select-search', :selected => params[:user_id], :data => { :placeholder => 'Please Choose' } }) %>
<%= show_errors(@venue, :category_ids).html_safe %>
</div>
</div>
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 relationship has-and-belongs-to-many