Это довольно неприятный вопрос новичка, но я не могу заставить итерацию объектов работать вообще в моем проекте rails.У меня есть две модели, «Фото» и «LandUse», которые обе имеют ассоциацию has_and_belongs_to_many.В консоли все работает, как и ожидалось.
Однако в действии фото-шоу я не могу понять, какой код выдаст список видов использования земли, связанных с фотографией.Мой код выглядит так:
<% for use in @photo.land_uses %>
<%= use.name %>
<% end %>
Это не дает никакого вывода.Я также попытался:
<% @photo.land_uses.each do |use| %>
<%= use.name %>
<% end %>
... и это тоже не работает.
В консоли, если я попробую что-то вроде этого:
photo = Photo.first
photo.land_uses
Iполучить список всех видов землепользования, к которым принадлежит фотография, без сюрпризов.
Итак, как мне перебрать этот список использований и напечатать название каждого использования?
Яплохо знаком с Ruby, но если бы я пытался сделать то же самое в PHP, это был бы простой цикл foreach:
foreach($photo->land_uses as $use) {
echo $use->name;
}
Так чего мне здесь не хватает?
Обновление: вот модели по запросу:
- Фотомодель -
class Photo < ActiveRecord::Base
belongs_to :user
belongs_to :transect
belongs_to :focus
has_and_belongs_to_many :land_uses
validates :caption, :presence => true
validates :place, :presence => true
validates :city, :presence => true
validates :country, :presence => true
has_attached_file :file,
:processors => [:watermark],
:styles => { :standard => "631x631>",
:marked => { :geometry => "631x631>", :watermark_path => "#{Rails.root}/public/images/watermark.png", :position => 'Center' },
:thumbnail => "174x130#"
},
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:path => ":user_id/:year/:month/:id/:style.:extension"
geocoded_by :location, :latitude => :lat, :longitude => :lng
after_validation :fetch_coordinates
def location
[place,city,state,country].delete_if{|val| val==''||nil}.join(', ')
end
end
- Модель LandUse -
class LandUse < ActiveRecord::Base
has_and_belongs_to_many :photos
validates_uniqueness_of :name
end
RE: ОшибкаСообщения ... Я не получаю сообщение об ошибке ни для одного, ни для другого подхода, я просто получаю пустое место, где должен быть список землепользования.
Спасибо!