0

我是 Ruby on Rails 的新手。我有 2 个模型:DeviceProperty. Device包含以下字段:id,nameProperty包含:文件id,device_id,speed,time。是模型device_id中表的外键。所以我的模型 device.rb 和 property.rb 如下所示:idDevice

设备.rb

class Device < ActiveRecord::Base
  attr_accessible :name
  has_many :properties
end

属性.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 %>
4

1 回答 1

4
@properties = Property.find(params[:device][:id])   

只会返回一个属性而不是数组

你需要这样的东西

@properties = Property.where(:device_id => params[:device][:id])

为了获得一个数组,然后您可以对每个数组进行迭代

于 2013-02-25T11:45:59.977 回答