2

Rails で HTML ドロップダウンを無効にしたいのですが、この解決策を見つけました: html でドロップダウン コントロール全体を無効にする方法

だから、私はこれを持っています:

f.select( ...., :disabled => true)

paramsしかし、問題は、ドロップダウンが無効になっていると、コレクションに表示されないことです。

編集:
これは私の状況です:とフィールド
を持つフォームがあります。次の 2 つのケースがあります。text_fieldselect

  • ユーザーは新しいアイテムを直接作成します。その場合、彼女は選択フィールドからカテゴリを選択します。
  • ユーザーは、カテゴリ ページからリダイレクトした後、新しいアイテムを作成します。この場合、選択フィールドはカテゴリの値に設定され、無効にする必要があります。

誰でもこれを修正する方法を知っていますか?

4

2 に答える 2

3

元の質問の私のコメントで述べたように、無効なフォーム要素の値は、フォーム送信のパラメーターには存在しません。これを回避するには、隠しフィールドを使用して、必要な値を保持および送信してみてください。

選択フィールドを無効にするかどうかを決定するのに役立ついくつかの変数とその他のものが設定されていると仮定します。

# ...
f.select(..., :disabled => @category_already_chosen)
f.hidden_field(...) if @category_already_chosen
# ...

もちろん、これはニーズに合わせて変更できますが、基本的な考え方はそこにあります。すでにカテゴリを選択していて、選択フィールドを無効にしたい場合は、非表示フィールドを作成します。カテゴリを選択していない場合は、隠しフィールドを省略して、ユーザーが選択フィールドを利用できるようにします。

私が投稿したリンクに示されているように、フォーム送信後に Javascript を使用してパラメーターを操作することなく、これがおそらくこの制限を回避する最も簡単な方法です。

于 2012-07-31T18:47:57.250 に答える
0

redirect_to 呼び出しにクエリ文字列パラメーターを追加します

redirect_to :action => form_path, :category => :whatever_category_they_came_from, :disabled => true

次に、あなたのフォームで

:selected => params[:category], :disabled => params[:disabled]
于 2012-07-31T18:12:42.233 に答える