2016-07-15 6 views
1

「選択してください」と表示されているフィールドを含むselect_tagが必要です。 このフィールドは、ユーザーが選択することはできません。ここでselect_tagに「非表示の非表示」オプションを設定する方法はありますか?

は私が持っていたいもののjsfiddleです:http://jsfiddle.net/gleezer/pm7cefvg/1/ Railsでは

、私はこれを実行しようとしました:

<%= select_tag(:userchief, options_for_select(@options_for_selectUsers, {:selected => "x1", :disabled => "x1", :hidden => "x1"})) %> 

@options_for_userは、複数のキー/値の要素を含む配列である) しかし、私は私のページのソースコードをチェックするとき、私は私のオプションのためにこれを見ることができます:

<option disabled="disabled" selected="selected" value="x1">Select</option> 

私が持っていたいものではないこと隠しフィールドが存在しないため、x1 selectオプションがselectのドロップダウンメニューに表示されます。

jsfiddleリンクに表示されているのと同じ結果を得るにはどうすればよいですか?

答えて

2

フォームのレンダリング時に属性がnilである場合にのみプレースホルダを表示するには、prompt => "プレースホルダ"を使用します。デフォルトで選択されますが、ユーザーが送信した場合は何も保存されません。属性に既に値が設定されている場合(デフォルト値がある場合やb)編集フォームの場合]、プレースホルダ項目はリストから完全に除外されます。

select_tag "people", options_from_collection_for_select(@people, "id", "name"), prompt: "Select something" 
# => <select id="people" name="people"><option value="">Select something</option><option value="1">David</option></select> 

OR

用途:include_blank => "プレースホルダ" あなたはすべての回でレンダリングされたリスト内のプレースホルダを含める場合。

更新

次のコードは、変更後のプロンプトを無効にします。あなたの例によく似ています。

<%= select_tag(name = 'person', options_for_select(User.all.unshift("your prompt message"), selected: prompt, disabled: prompt,)) %> 

そして、あなたはjqueryのを使用する必要があるよりも、選択の変更にプロンプ​​トを削除する場合。

$("#selectBox").change(function(){ 
    $("#selectBox option[value='']").remove(); 
}​); 
+0

ソースhttp://stackoverflow.com/questions/4557701/ruby-on-rails-how-do-i-use-a-default-placeholder-thing-in-a-select-tag – power

+0

それまったく動作しません。すでに試してみましたが、あなたの答えは他の形式の選択を使用しています。 –

+0

私は自分の答えのselect_tagを更新しました。これにはプロンプトオプションとhtmlへの変換が含まれています。これが助けてくれることを願う – power

関連する問題