0

ロックのコレクションを一覧表示するドロップダウン メニューがあります。オプションが選択されたときに 2 つのパラメーターを設定したいと思います。

  1. :name => l.name (以下のコードで動作します)
  2. :device_id => l.id

    <%= f.select(:name, Lock.all.collect {|l| [ l.name ] } ,{:include_blank => true} ) %>

hidden_​​field に値を渡そうとしましたが、フィールドは選択されたロックを認識していません。どんな入力でも大歓迎です。

4

2 に答える 2

0

コントローラー側で2つの値を取得する必要がありますか?

元:-

私のデータベースには以下の値があります

ID Name
4  gggg
5  tttt
2  iiii

サーバーのドロップダウンからttttを選択すると、ドロップダウンにはすべての名前gggg、tttt、iiiiが表示され、5、ttttの両方が必要でしたか?

次に、以下のコードを使用する必要があります

コントローラ内

@locks = Lock.all.map{|l| [l.name, "#{l.id};#{l.name}"]}

あなたの見解では

<%= select_tag(:name, options_from_collection_for_select(@locks) )%>

そのため、「;」で区切られた id と name の両方の値が送信されます。.

コントローラーでは、「;」で分割する必要があります

于 2013-05-07T06:02:36.010 に答える
0

こんにちは、あなたはこれを行うことができます:

  <%= select_tag(:name, options_from_collection_for_select(Lock.all, :id, :name, params[:name]) )%>

またはコントローラーに次のコードを追加します。

@locks = Lock.find(:all)

そしてあなたの見解では

 <%= select_tag(:name, options_from_collection_for_select(@locks, :id, :name, params[:name]) )%>

この select_tag を含むフォームを送信すると、 params[:name] はアプリの URL から選択された名前を取得します。

それが役に立てば幸い。

于 2013-05-07T04:43:50.140 に答える