0

RubyonRailsは初めてです。私は2つのモデルを持っています:DevicePropertyDevice次のフィールドが含まれます:id,nameおよびProperty含む:ファイルid,device_id,speed,time。モデルdevice_idのテーブルの外部キーです。したがって、私のモデルdevice.rbとproperty.rbは次のようになります。idDevice

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

デバイスモデルID1を選択しているときに、次の詳細を取得する必要があります。

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を絞り込んでいる間、データの1つだけが取得されます

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])   

配列ではなく、1つのプロパティのみを返します

あなたはそのような何かをする必要があります

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

配列を取得するために、それぞれを反復処理できます

于 2013-02-25T11:45:59.977 に答える