我想使用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
字段中添加什么?数据库表包含no
,deviceid
,speed
和time
。
<% @details.each do |d| %>
<%=collection_select(:device_detail, d.No, @details, :id, :name) %>
<% end %>
这可能吗?
答案 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 %>
这就是你问的问题吗?