Rails - Как мога да покажа един вложен атрибут

Имам нов проблем, създавам мрежа, където качвам много изображения, използвайки вложени атрибути и полиморфна таблица, в моя index.html искам да покажа само едно изображение, но не мога да намеря как. Но аз съм нов в релсите.

фотография.рб

class Photography < ActiveRecord::Base
    validates :title, :description, presence: true
    belongs_to :user
    has_many :images, as: :imageable, dependent: :destroy
    accepts_nested_attributes_for :images, :reject_if => lambda { |a| a[:img_str].blank? }, :allow_destroy => true
end

image.rb

class Image < ActiveRecord::Base
    belongs_to :imageable, polymorphic: true

    mount_uploader :img_str, AssetUploader
end

index.html.erb

<% for photo in @photo %>
    <%= link_to photo.title, photography_path(photo) %>
    <% photo.images.each do |images| %>
        <%= images.img_str %>
    <% end %>
<% end %>

С метода for показвам цялото изображение, опитайте да добавите .first, но казва undefined method first for 5:Fixnum. Мисля, че трябва да създам помощен метод, но не съм сигурен. Може ли някой да ми помогне? Благодаря


person Sant Davalos    schedule 04.11.2014    source източник
comment
try add .first - и къде го добавихте?   -  person BroiSatse    schedule 04.11.2014
comment
@BroiSatse в изречението images.img_str.first   -  person Sant Davalos    schedule 04.11.2014


Отговори (1)


Опитвам:

<% for photo in @photo %>
    <%= link_to photo.title, photography_path(photo) %>
    <%= photo.images.first.img_str if photo.images.any? %>
<% end %>

Освен това for се използва много рядко в ruby, вместо това направете:

<% @photos.each do |photo| %>
person BroiSatse    schedule 04.11.2014
comment
Не мога да направя това, защото images е масив и получавам недефиниран метод `img_str' за nil:NilClass, когато опитам ‹%= photo.images.first.img_str %› - person Sant Davalos; 04.11.2014
comment
@SantDavalos - Това означава, че няма изображения за снимка. Отговорът е актуализиран, за да се справи и с този случай. Освен това изображенията не са масив! - person BroiSatse; 04.11.2014
comment
За съжаление грешката е недефиниран метод `img_str' за #‹Image::ActiveRecord_Associations_CollectionProxy:0x007fe6d809aad0› - person Sant Davalos; 04.11.2014
comment
@SantDavalos - Сигурен ли си, че поставяш първо между изображения и img_str? first няма право да връща CollectionProxy - person BroiSatse; 04.11.2014
comment
Благодаря ти много, човече, поставих първо до края, с тази нова линия работи перфектно. - person Sant Davalos; 04.11.2014