如何填充下拉列表?

时间:2013-03-12 04:59:11

标签: ruby-on-rails ruby

我想使用rails 3填充从数据库获取的值到下拉列表:

@details包含数据库中的所有值。打印@details.inspect时,它在网页中显示为:

[<DeviceDetail DeviceID: 14448, No: 616">, <DeviceDetail DeviceID: 14448, No: 617">, <DeviceDetail DeviceID: 14448, No: 618">]........

在循环中,我获取No详细信息。如何在下拉列表中显示No

 <% @details.each do |d| %>    
    <%=d.No%>
    <% end %>

我在下拉列表中添加了以下内容以显示No,但它返回错误undefined method name for DeviceDetail:0x390f3f0。我的数据库不包含名称,因此我应该在:name字段中添加什么?数据库表包含nodeviceidspeedtime

 <% @details.each do |d| %>    
      <%=collection_select(:device_detail, d.No, @details, :id, :name) %>
        <% end %>

这可能吗?

2 个答案:

答案 0 :(得分:2)

这是表格的一部分吗?使用select_tag,然后选择相同的输入选项。 查看http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag

答案 1 :(得分:0)

如果我正确理解您的问题,您需要在@details控制器中声明实例变量Device。看起来应该是这样的:

控制器/ device.rb:

def show
  @details = Detail.all
end

然后,在索引和显示页面中,您可以像这样访问该实例变量:

视图/设备/ show.rb:

<% @details.each do |detail| %>
  <%= render detail %>
<% end %>

它应循环遍历每个细节并渲染每个细节。如果您只想显示“否”的详细信息,它应该如下所示:

<% @details.each do |detail| %>
  <%= detail.no %>
<% end %>  

或者,如果您在展示页面上,则可以像这样简单地调用该页面的详细信息:

<%= detail.no %>

这就是你问的问题吗?