1

我想显示值从数据库下拉列表。 对于我在我的控制器类中,我做了以下工作,从数据库中获取值并正确获取。在轨道上的红宝石下拉列表

@value = Message.find(:all) 

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

我怎样才能显示SlNo值下拉list.Here是代码正在使用,并得到错误!我不知道如何设置一个collection_select.Please中值帮帮我!

<% @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 
+0

是列名的表名选项的方法是什么? – jvnill 2013-03-08 09:13:53

回答

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" } %> 

更新:解释为传递的参数

  • :价值=你要更新的记录的符号表示,它可能也不是一个实例记录,但只是一个符号,将在命名约定中使用选择标签
  • 的:ID =您要更新
  • @value列=集合,显示选择
  • :ID =要使用该方法会的价值传递选定值
  • :S1No =将被用作标签选择标签
+0

越来越erroR !!!!!!!!语法错误,意外的')',期待keyword_end ... ompt =>“ - 选择设备”})); @ output_buffer.safe_concat(' ...^ – chinchu 2013-03-08 07:47:40

+0

对不起''collection_select'末尾有一个额外的')' – jvnill 2013-03-08 07:53:17

+0

这里是我正在使用的代码获取相同的错误: - (................ <%= collection_select:value ,:id,@value,:id,:S1No,{selected:params.fetch(:value,{})[:id] .to_i,:prompt =>“ - 选择一个设备”})%> – chinchu 2013-03-08 07:58:49

1
# START 
f.collection_select :id, Message.all(:order => "name"), :id, :name, :include_blank => true 
# END 

OR

# 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