2011-08-11 61 views
1

我有以下的關聯:Rails 3的自動選擇從Collect_select

Town -> has_many :outlets 
User -> belongs_to :town 
Outlet -> belongs_to :town, has_many :problems 
Problem -> belongs_to :outlet 

在奧特萊斯頁,我希望能夠點擊一個按鈕,將帶我到新問題頁。在「新問題頁」我有以下collection_select:

f.collection_select :outlet_id, Outlet.all, :id, :name 

不過,如果我點擊我花了這裏離出口頁面的按鈕,我想正確的出口已經被選中並變灰,因此用戶不能更改它。

我想我可能有一個自定義路由做到這一點,那將接受:outlet_id作爲PARAM,但我不知道如何做到這一點,或者即使這是最好的選擇。

任何幫助,非常感謝。

回答

1

在你的控制器,你有什麼樣

@problem = Problem.new 

嘗試

@problem = Problem.new({ outlet_id: params[:outlet_id] }) 

和表單助手應該照顧它。

您也可以嘗試做一個嵌套的RESTful資源在這種情況下,URL看起來像/插座/ 5 /問題/新和軌道會自動設置PARAMS [:outlet_id] 5 ..

您的這條路線將如下所示:

resources :outlets do 
    resources :problems  
end 
+0

所以在標籤的link_to,什麼將我設爲網址PARAM? 順便說一句,感謝您的快速回復,我是Ruby的新手和Stack Exchange社區是太棒了:D – Ammar

+0

從您的rails目錄中,執行「rake routes」..您會看到類似new_outlet_problems的東西..所以在您的幫手你會做new_outlet_problems_path(@outlet),其中@outlet是outlet對象或id。 – Stephen

+0

我現在已經有鏈接工作,但是當我進入新問題頁面時,Outlet ID仍然是選擇框中的默認值,而不是我想要的出口 – Ammar