1

如图所示,我有三个模型

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

我正在使用简单形式的 gem,我想创建一家新餐厅并首先选择一个位置,该位置具有许多区域以及与要自动选择的位置相关联的正确区域。然后我缩小到一个区域。在概念上类似于说某人如何选择大陆,然后将其缩小到特定大陆的一个国家。有没有办法使用 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 %>

这不能按预期工作。我已经用 Locations 和 Areas 填充了我的数据库。有任何想法吗?

4

1 回答 1

2

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

<%= f.input :area_id,collection: @areas, as: :grouped_select, group_method: :locations %>
于 2013-09-30T19:50:41.950 回答