简单形式的分组集合通过关联选择has_many

时间:2013-08-27 11:51:03

标签: ruby-on-rails ruby-on-rails-3.2 simple-form

我有三个模型如图所示

class Location < ActiveRecord::Base
  attr_accessible :location_name
  has_many :areas
  has_many :restaurants, through: :areas
end

class Area < ActiveRecord::Base
  attr_accessible :area_name, :location_id
  belongs_to :location
  has_many :restaurants
end

class Restaurant < ActiveRecord::Base
  attr_accessible  :description, :menu, :restaurant_name, :area_id
  belongs_to :area
end

我使用简单形式的宝石,我想创建一个新的餐厅,并选择一个位置,首先有许多区域和与自动选择的位置相关的正确区域。然后我缩小到一个区域。在概念上类似于说某人如何选择大陆然后缩小到某个特定大陆的国家。有没有办法使用simple_form实现这一目标。 我对餐厅控制器的新动作有什么额外的帮助吗?

这是我对创建新餐厅的看法

<%= simple_form_for @restaurant do |f| %>
<%= f.input :restaurant_name %>
<%= f.input :description %>
<%= f.input :menu %>
<%= f.input :area_id,collection: @locations, as: :grouped_select, group_method: :areas%>
<%= f.button :submit %>
<% end %>

这不会按预期工作。我已经使用位置和区域填充了我的数据库。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您需要以相反的方式传递选项,collection是父组,而不是子组。在您的情况下,您需要:

<%= f.input :area_id,collection: @areas, as: :grouped_select, group_method: :locations %>