Rails итерация - PullRequest
       10

Rails итерация

0 голосов
/ 08 ноября 2010

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

Спасибо!

1 Ответ

0 голосов
/ 08 ноября 2010

Как неловко ...

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

Спасибо за просмотр.

...