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 = 您要更新的记录的符号表示,它也可能不是实例记录,而只是将在选择标记的命名约定中使用的符号
  • :id = 您要更新的列
  • @value = 显示选项的集合
  • :id = 您要使用的方法,它将作为所选值的值传递
  • :S1No = 将用作选择标签选项标签的方法
于 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 回答