2012-05-04 81 views
6

我正在使用一個collection_select字段,但需要預先添加一些默認選項,這並不代表特定的模型記錄,並且用於將appropriet字段設置爲NULL。但我無法找到任何方式來做到這一點。Rails:將選項添加到collection_select

如果您需要更多信息,請不要問。 使用Rails 3.2.3和標準表單助手。

P.S.我知道我可以做這樣的事情:

@parents = ['default_name','nil'] 
@parents << Model.all.map {|item| [item.name,item.id]} 

但我認爲有一個更優雅的方式。

回答

15

有一個:include_blank選項可以傳遞給collection_select helper方法:

f.collection_select(:author_id, Author.all, :id, :name_with_initial, 
        :include_blank => "Nothing selected") 

也有類似的選項稱爲:提示,也檢查出來。

+1

非常感謝。沒有注意到這個參數。會看起來更好。 – Almaron

+0

':prompt'和':include_blank'的組合非常乾淨,而不是自定義的'select'。謝謝 –

1

在你看來,這樣的東西是可以接受的嗎?

collection_select :field1, :field2, @models+[Model.new(name: "default_name")], :name, :id 
10

你或許可以使用選擇代替:

f.select(:item_id, @items.collect {|p| [ p.name, p.id ] } + ['Or create a new one like','new'], {:include_blank => 'Please select a item'}) 
+0

這正是我需要的,謝謝! – Thomas