2012-04-05 14 views
25

私は自分のアプリでsimple_formを使用しています。selectで空白の値を指定する方法は?

私の空白の値を私の選択で「」以外のテキストにするにはどうすればよいですか?

空白を含めるかどうかはわかりません。

答えて

45

ベン、

どのように選択するためのオプションを構成するかによって異なります。下のコードのようにしている場合は、文字列を:includeブランクに渡します。

select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] }, {:include_blank => 'Some text here'}) 

あなたはoptions_for_selectにオプションを設定している場合は()、その後、あなたは、次のような何かを行うことができますが:

options_for_select([["Dollar", "$"], ["Kroner", "DKK"]]) 

値で=「」配列内の2番目の値であると最初にドロップダウンに表示される名前が表示されます。

options_for_select([["Some text here", ""], ["Dollar", "$"], ["Kroner", "DKK"]]) 
+2

のための文字列値を設定することでこれを頼まれていなかった、しかし、あなたが選択可能にない空白のオプションをしたい場合は、追加することができます。 include_blank => true、disabled: ""、selected: ""、プレースホルダ: "Foo Bar" ' – MCB

+0

Georgiの方がより良い回答を得ています。 'include_blank'の代わりに' prompt: '誰ですか?' 'それは空白の値を持ちますが、あなたが提供する表示テキストです。 'include_blank'はブール値しか受け付けません - 表示する文字列を受け付けません。 –

1

あなたはoptions_for_selectに渡された配列の先頭に["Your Text", ""]を追加することで、手動でこれを行う、またはselect_tagに渡された文字列の先頭に"<option value=\"\">#{h("Your Text"}</option>"を追加することができます。

31

代わり

:include_blank => true 

のこれはあなたが探しているものであれば

:include_blank => "your text here" 

をお試しください:だからあなたの場合には、あなたはこのように見えるために、第2の答えを変更することができます。

+2

本当に、それは値(属性)ではなくラベルを設定します – zappan

+0

質問への答えではありませんが、それは空白のラベルを設定したいと思ったので私の質問に対する答えです。 –

+0

これは 'select_tag'メソッドでは機能しませんが、' select'メソッドでは動作します。 (そして、はい、違います。) 'include_blank'の値に文字列を使用すると、文字列のない空白のオプションしか提供されません。その場合は 'prompt'を使います。 –

22

`あなたがselect_tag(name, option_tags = nil, options = {})機能を使用している場合は、正しいオプションが:prompt => "Some text"はなくselect

+3

select_tagでは伝統的な選択とは異なることが分かりかねます。ありがとう。 – zarazan

+0

タグは場所のいたるところでさまざまに異なる動作をします。私もいつも私を連れて行きます。 – Dudo

+2

これは絶対に正しいことであり、理解するのは少し面倒です。 'select_tag' **は' include_blank'オプションを受け入れますが、そのオプションの値として渡すテキストは表示されません。それには 'prompt'を使う必要があります。ありがとう@Georgi! –

関連する問題