2011-06-25 179 views
0

的Rails 2.3.11Rails選擇助手 - 默認設置?

閱讀this answer,但它不是爲我工作。

我希望此選擇框的默認選項爲通過URL傳遞的event_id

f.select :event_id, @events, :selected => url_args["event_id"] 

一個例子@events[["SC 2 Tournament", 195], ["Obstacle Course", 196], ["Mortal Combat", 197]]

下面的方式也沒有工作:

  • 加入 「.to_i」 到 「url_args [」 事項標識」
  • 使用options_for_select(@events ,url_args [「event_id」]

謝謝!

回答

2

這是一個容易得多,如果你使用collection_select幫手:

f.collection_select :event_id, @events, :id, :name 

然後選擇默認選項(和有被在頁面加載選擇),你可以簡單地把它分配給它的任何對象是該表格適用於控制器內部。例如,像這樣:

def new 
    @events = Event.all 
    @thing = Thing.new(:event => @events.first) 
end 

我不知道您的url_args從何而來,但我猜它可能是從URL設置了一個param,在這種情況下,你可以這樣做:

Thing.new(:event_id => params[:event_id]) 

最後一件事 - collection_select@events不同,因爲您已經指定它,因爲您使用的是嵌套Array,因此當它需要一個對象數組時,它可以調用idname以便檢索值並顯示選擇選項的文本。要解決該問題,只需使用ActiveRecord查找程序之一(如Event.allEvent.find(..))在您的控制器中重新定義@events即可。

有意義嗎?

+0

我以前從未使用過集合,因此我可能會在稍後查看這些集合。我可以簡單地通過替換'params'的自定義'url_args'方法來解決我的問題,如下所示: <%= f.select:event_id,@events,:selected => params [:event_id] .to_i% > – Benjin