1

データベースからドロップダウンリストに値を表示したい。そのために、コントローラークラスで次のことを行って、db から値を取得し、適切に取得しました。

 @value = Message.find(:all)

<Message ID: 14448, SlNo: 609">, #<Message ID: 14448, SlNo: 610">

SlNo 値をドロップ ダウン リストに表示するにはどうすればよいですか。使用しているコードでエラーが発生しています。collection_select 内で値を設定する方法がわかりません。助けてください!!

<% @value.each do |d| %>
<%=collection_select(:value, :id, @value, :id, { selected: params.fetch(:value, {})[:id].to_i, :prompt => "-Select a device" }) %>
<% end %> 

テーブル名の取得

["UniqueDeviceID", "SlNo"] 

モデル

class MessageDetail < ActiveRecord::Base
  # attr_accessible :title, :body

  set_table_name 'DeviceDetails'
set_primary_key 'SlNo'
end
4

2 に答える 2

2

それ以外の

<% @value.each do |d| %>
  <%=collection_select(:value, :id, @value, :id, { selected: params.fetch(:device, {})[:id].to_i, :prompt => "-Select a device" }) %>
<% end %> 

使用する

<%= collection_select :value, :id, @value, :id, :S1No, { selected: params.fetch(:device, {})[:id].to_i, :prompt => "-Select a device" } %>

更新: 渡されたパラメーターの説明

  • :value = 更新するレコードのシンボル表現。インスタンス レコードではなく、select タグの命名規則で使用される単なるシンボルである場合もあります。
  • :id = 更新する列
  • @value = 選択肢を表示するコレクション
  • :id = 選択した値の値として渡される、使用したいメソッド
  • :S1No = select タグのオプションのラベルとして使用されるメソッド
于 2013-03-08T07:41:52.710 に答える
1
# START
f.collection_select :id, Message.all(:order => "name"), :id, :name, :include_blank => true
# END

また

# START
messages_arr = []    
messages = Message.all(:order => "name")
messages.each do |msg|
 messages_arr << [msg.name, msg.id]
end
f.select(:id, options_for_select(messages_arr), {:include_blank => 'Include All'}, {:class=>"span12"})
# END
于 2013-05-12T09:56:55.433 に答える