2010-11-07 1 views
0

Это довольно неприятный вопрос newb, но я не могу заставить итерацию объектов работать вообще в моем проекте rails. У меня две модели: «Фото» и «LandUse», у которых есть ассоциация has_and_belongs_to_many. В консоли все работает так, как ожидалось.Rails итерация

Однако, в действии фотошоу я не могу понять, какой код создаст список связанных с фотографией земель. Мой код выглядит так:

<% for use in @photo.land_uses %> 
    <%= use.name %> 
<% end %> 

Это не производит никакого вывода. Я также пробовал:

<% @photo.land_uses.each do |use| %> 
    <%= use.name %> 
<% end %> 

... и это тоже не работает.

В консоли, если я попробовать что-то вроде этого:

photo = Photo.first 
photo.land_uses 

получить список всех земель использует, что фотография принадлежит, никаких сюрпризов.

Как я могу перебирать этот список использований и печатать имя каждого использования?

Я новичок в Ruby, но если бы я пытался сделать то же самое в РНР будет простой цикл Еогеасп:

foreach($photo->land_uses as $use) { 
    echo $use->name; 
} 

Так что я здесь отсутствует?


Обновление: вот модели в соответствии с просьбой:

--Photo Model--

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 : Сообщения об ошибках ... Я не получаю сообщение об ошибке с или для каждого подхода, я просто получаю пустое место, где должен быть список использования земли.

Спасибо!

+0

отправьте свои модели – s84

+0

у вас есть ошибки? – s84

+0

Что говорит '@ photo.land_uses.map (&: name)'? – Reactormonk

ответ

0

Как смущающе ...

Я нашел проблему. Оба моих оригинальных решения для печати названия землепользования работали очень хорошо. Проблема состояла в том, что я не правильно засеял данные, поэтому фотографии, которые я тестировал, не имели никакого землепользования (поэтому не было сообщений об ошибках, но без контента). Исправлен файл семпла, и представление отображается как ожидалось.

Спасибо, что посмотрели.