Я новичок в Ruby on Rails. У меня есть 2 модели: Device
и Property
. Device
содержит следующие поля: id,name
и Property
содержит: файлы 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
Я должен заполнить детали устройства в раскрывающемся списке , Он работает правильно. Мне также нужно получить значения из базы данных свойств при выборе имени из раскрывающегося списка.
кодконтроллер, чтобы получить значение, передав идентификатор устройства следующим образом:
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
При выборе идентификатора модели устройства 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><%[email protected]%> <%[email protected]%> <%[email protected]%></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><%[email protected]%> <%[email protected]%> <%[email protected]%></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><%[email protected]%> <%[email protected]%> <%[email protected]%></b>
</li></ul>
<% end %>
С одной стороны ' Property.find' вернет только один объект. Это не будет коллекция, поэтому вы не можете называть ее «каждый». – Mischa