2013-08-27 59 views
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 

上午,我想首先創建一個新的餐廳,並選擇一個位置其中有許多領域,與要自動選擇的位置相關的正確區域。然後我縮小到一個區域。在概念上類似地說某人將如何選擇大陸然後被縮小到特定大陸的一個國家。有沒有辦法使用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

請描述它如何不工作。 – slothbear

回答

2

您需要通過其他方式傳遞選項,collection是父組,而不是子組。在你的情況下,你需要:

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

我上面做了什麼實際工作。我只需要在餐館'new'操作中添加'@locations = location.all'。但是它帶來了菜單中的對象。所以我在'group_method'後面添加了'label_method :: area_name'現在可以看到區域名稱,但仍然可以看到該位置的對象表示。我如何獲得'location_name' –