Версия Ruby: 2.0
Версия Rails: 4.0
У меня есть класс галереи - это has_many :assets
(активы представляют собой модель, которая принимает загрузки из Paperclip
)
Я пытаюсь отобразить миниатюру для каждой галереи в файле index. Я хочу сделать что-то вроде:
<%= gallery.assets.first.photo.url(:thumb) %>
Однако это дает мне эту ошибку: undefined method
photo' для nil: NilClass`
Странная часть:
Это работает:
<% gallery.assets.each do |asset| %>
<%= image_tag asset.photo.url(:thumb) %>
<% end %>
Но мне нужен только один образ, а не все. Что мне не хватает?
Обновить
Вот запрошенный вывод консоли
Gallery.first.assets
2.0.0p247 :010 > Gallery.first.assets
Gallery Load (0.3ms) SELECT "galleries".* FROM "galleries" ORDER BY "galleries"."id" ASC LIMIT 1
Asset Load (0.2ms) SELECT "assets".* FROM "assets" WHERE "assets"."gallery_id" = ? [["gallery_id", 2]]
=> #<ActiveRecord::Associations::CollectionProxy [#<Asset id: 15, gallery_id: 2, created_at: "2013-08-23 23:12:47", updated_at: "2013-08-23 23:12:47", photo_file_name: "mightywash.png", photo_content_type: "image/png", photo_file_size: 24967, photo_updated_at: "2013-08-23 23:12:46">]>
2.0.0p247 :011 >
Галерея.first.assets.first
2.0.0p247 :011 > Gallery.first.assets.first
Gallery Load (0.4ms) SELECT "galleries".* FROM "galleries" ORDER BY "galleries"."id" ASC LIMIT 1
Asset Load (0.2ms) SELECT "assets".* FROM "assets" WHERE "assets"."gallery_id" = ? ORDER BY "assets"."id" ASC LIMIT 1 [["gallery_id", 2]]
=> #<Asset id: 15, gallery_id: 2, created_at: "2013-08-23 23:12:47", updated_at: "2013-08-23 23:12:47", photo_file_name: "mightywash.png", photo_content_type: "image/png", photo_file_size: 24967, photo_updated_at: "2013-08-23 23:12:46">
2.0.0p247 :012 >
Обновление 2
asset.rb
class Asset < ActiveRecord::Base
belongs_to :gallery
has_attached_file :photo,
:styles => {
:thumb => "100x100#",
:small => "300x300>",
:large => "600x600>"
}
end
rails console
и показать нам результат какgallery.assets
, так иgallery.assets.first
? - person Serabe   schedule 24.08.2013gallery.assets.first.photo
, пожалуйста. - person Serabe   schedule 24.08.2013NoMethodError: undefined method 'photo' for #<Asset:0x007fde7dc01aa8>
- person drewwyatt   schedule 24.08.2013Asset
код модели, пожалуйста. - person Serabe   schedule 24.08.2013