2013-09-06 12 views
5

collection_selectの問題を解決してください。 私が使用:Railsのcollection_selectの値がinclude_blankに設定されています

<select id="service_carmake_id" name="service[carmake_id]"> 
    <option value="">Any</option> 
    <option value="12">Audi</option> 
    <option value="16">Porsche</option> 
    <option value="17">VW</option> 
</select> 

しかし、私は "任意" オプションの値= "0" が必要になります。

collection_select(:service, :carmake_id, Carmake.all, :id, :name, include_blank: 'Any') 

HTMLです。 可能ですか?

更新:

select(:service, :carmake_id, [['Any', 0]] + Carmake.all.collect { |p| [p.name, p.id]}) 

が助けてくれたが、railswayはありますか?それとも私は何かを誤解していますか?

+0

'[0、 'Any']'を渡すとどうなりますか? –

+3

しかし、それは意味をなさないと思います。 DEFAULT値が空でないことを要求しているようです。空白の定義は '存在 'チェックに失敗する値です –

+0

@MichaelSzyndelあなたが言ったことは正しいですが、彼は本当にid' 0 'のレコードを見つけることができますか?間違いなくこの選択は何らかの形の一部です。それで、どのidのcarmake_idフィールドにも '0'を入力する点は何ですか? –

答えて

9

これはうまくいくかもしれない:

options = Carmake.all.unshift Carmake.new(id: 0, name: 'Any') 
collection_select(:service, :carmake_id, options, :id, :name, include_blank: 'Any') 

私はアクションでセーブ/更新をテストしていませんでしたが。

関連する問題