2016-04-19 10 views
0

私は特定の状況下で無効にできるコレクションの選択を行っています。 しかし、フォームの内容を無効にすると、selectから値が選択されるので、無効になっていてもこのフィールドの値を含むフォームを送信できます。フォームヘルパーでRailsが無効になっているオプション

フォームが無効になっておらず、ユーザーが何かを選択しなければならないときは、ユーザーが入力した値をレールサーバーに送信します。しかし、無効になっていてユーザーが選択できない場合、選択したデフォルト値をサーバーに送信することになっていますが、nilは送信されます。ここで

はHAMLでcollection_selectです:

= f.collection_select :billing, Task.billings.keys, :to_s, :humanize, 
{ selected: ("inherit" if @parent_task_id) }, 
{ class: "form-control #{(Task.find(@parent_task_id).billing != "unspecified") if [email protected]_task_id.nil?}", 
disabled: ((Task.find(@parent_task_id).billing != "unspecified") if [email protected]_task_id.nil?) } 

私はそれを「継承」が選択されていることを述べている(使用不可の場合には)私のブラウザ内の要素を見てみると。

これは古典的なルールですが、フォームのコンテンツが無効になっても、それは価値がなく、サーバにparamとしてnilを送信しません。

ありがとうございました! :)

答えて

2

これは、htmlの仕様に従って予想される動作です。あなたのコントローラでは、paramsハッシュに課金キーが存在するかどうかをチェックし、それに応じてあなたの値に設定することができます。

+0

情報とソリューションをありがとう。私はビュー側にとても集中していたので、コントローラーでそれを行うことができたことを完全に忘れてしまった。 ありがとう!素敵な一日を過ごしてください:) – Naarsh

+0

喜んで私は助けることができました。君も!あなたは私の答えを「受け入れられた」と記してください、私は私の次の特権を得ようとしています:)、thx。 – margo

関連する問題