从两个表中获取值

时间:2013-02-25 11:30:41

标签: ruby-on-rails ruby ruby-on-rails-3

我是Ruby on Rails的新手。我有2个模型:DevicePropertyDevice包含以下字段:id,nameProperty包含:files id,device_id,speed,timedevice_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 %>

1 个答案:

答案 0 :(得分:4)

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

只返回一个Property而不是一个数组

你需要像

这样的东西
@properties = Property.where(:device_id => params[:device][:id])

为了获得一个数组,然后您可以使用每个

进行迭代