我是Ruby on Rails的新手。我有2个模型:Device
和Property
。 Device
包含以下字段:id,name
和Property
包含:files id,device_id,speed,time
。 device_id
是模型id
中表Device
的外键。所以我的模型device.rb和property.rb如下所示:
device.rb
class Device < ActiveRecord::Base
attr_accessible :name
has_many :properties
end
property.rb
class Property < ActiveRecord::Base
attr_accessible :device_id, :speed, :time
belongs_to :device
end
我必须在下拉列表中填充设备详细信息。它运作正常。 我还必须从属性数据库中获取值,同时从下拉列表中选择名称。
通过传递设备ID来获取值的控制器代码,如下所示:
def show
@properties = Property.find(params[:device][:id])
end
在属性表中测试值如下:
id device_id time speed
1 1 13:23:00 13
2 2 23:20:00 63.8
3 1 10:35: 100.56
设备型号:
id name
1 2345
2 2345
在选择设备型号ID 1时,我必须获取以下内容的详细信息:
id device_id time speed
1 1 13:23:00 13
3 1 10:35:00 100.56
在视图show.html.erb中如下:
<% if (@properties.blank?) %>
<p><strong>Search results not found.</strong></p>
<% else %>
<p><strong>Available employe Details are listed below <strong></p>
<ul>
<% @properties.each do |c| %>
<li>
<b><%=@properties.id%> <%=@properties.speed%> <%=@properties.time%></b>
</li>
<% end %>
</ul>
<% end %>
在运行时遇到此错误
undefined method `each' for #<Property:0x3ee3ff8>
10: <% else %>
11: <p><strong>Available employe Details are listed below <strong></p>
12: <ul>
13: <% @properties.each do |c| %>
14: <li>
15: <b><%=@properties.id%> <%=@properties.speed%> <%=@properties.time%></b>
16: </li>
但是,在按照以下方式拧取show.html.erb时,只有一个数据正在
id device_id time speed
1 1 13:23:00 13
<% if (@properties.blank?) %>
<p><strong>Search results not found.</strong></p>
<% else %>
<p><strong>Available employe Details are listed below <strong></p>
<ul><li>
<b><%=@properties.id%> <%=@properties.speed%> <%=@properties.time%></b>
</li></ul>
<% end %>
答案 0 :(得分:4)
@properties = Property.find(params[:device][:id])
只返回一个Property而不是一个数组
你需要像
这样的东西@properties = Property.where(:device_id => params[:device][:id])
为了获得一个数组,然后您可以使用每个
进行迭代