這是一個非常令人沮喪的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 :錯誤消息... 我沒有得到一個錯誤消息與任何方法或每個方法,我只是得到一個空白空間應該有一個土地用途的列表。
謝謝!
發佈你的模特請 – s84 2010-11-07 21:24:48
你有什麼錯誤嗎? – s84 2010-11-07 21:25:40
'@ photo.land_uses.map(&:name)'告訴你什麼? – Reactormonk 2010-11-07 21:36:10