0

这是一个非常令人沮丧的新手问题,但我似乎无法让对象的迭代在我的 rails 项目中工作。我有两个模型,“Photo”和“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

我得到了这张照片所属的所有土地用途的清单,这并不奇怪。

那么如何遍历该使用列表并打印每个使用的名称?

我是 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

-- 土地利用模型 --

class LandUse < ActiveRecord::Base
    has_and_belongs_to_many :photos

    validates_uniqueness_of :name
end

回复:错误消息...我没有收到使用 for 或 each 方法的错误消息,我只是在应该有土地用途列表的地方得到一个空白区域。

谢谢!

4

1 回答 1

0

多么尴尬...

我发现了问题。我用于打印土地使用名称的两种原始解决方案都运行良好。问题是我没有正确播种数据,所以我正在测试的照片没有保存任何土地使用(因此没有错误消息,但也没有内容)。修复了种子文件,视图按预期呈现。

谢谢参观。

于 2010-11-07T23:45:53.213 回答