我有三个模型如图所示
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 %>
这不会按预期工作。我已经使用位置和区域填充了我的数据库。有什么想法吗?
答案 0 :(得分:2)
您需要以相反的方式传递选项,collection
是父组,而不是子组。在您的情况下,您需要:
<%= f.input :area_id,collection: @areas, as: :grouped_select, group_method: :locations %>