2010-11-07 50 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,但如果我試圖做同樣的事情在PHP中會是一個簡單的foreach循環:

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

那我在這裏失蹤?


更新:這裏是爲所要求的模式:

--Photo型號 -

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 

- 模型的土地利用 -

class LandUse < ActiveRecord::Base 
    has_and_belongs_to_many :photos 

    validates_uniqueness_of :name 
end 

RE :錯誤消息... 我沒有得到一個錯誤消息與任何方法或每個方法,我只是得到一個空白空間應該有一個土地用途的列表。

謝謝!

+0

發佈你的模特請 – s84 2010-11-07 21:24:48

+0

你有什麼錯誤嗎? – s84 2010-11-07 21:25:40

+0

'@ photo.land_uses.map(&:name)'告訴你什麼? – Reactormonk 2010-11-07 21:36:10

回答

0

有多尷尬......

我發現了這個問題。我打印土地使用名稱的原始解決方案都很好。問題是我沒有正確地輸入數據,所以我測試的照片沒有任何土地使用保存(因此沒有錯誤信息,但沒有內容)。修復了預期的種子文件和視圖渲染。

感謝您的關注。