Лучший способ получить миниатюру скрепки в index.html.erb - PullRequest
0 голосов
/ 05 августа 2011

Я боролся с этим часами.Для некоторой предыстории я настроил скрепку, помня, что однажды я захочу добавить несколько вложений.Я проследил экран Эмерсона, чтобы помочь мне разобраться.(http://www.emersonlackey.com/article/paperclip-with-rails-3) Теперь у меня есть это в моем представлении, которое показывает то, что я хочу, чтобы оно показывало. У меня были проблемы в течение долгого времени, потому что это вызывало ошибки, когда миниатюра не существовала для некоторых сообщений. Во всяком случае, написал это,это на мой взгляд, и я просто думаю, что это действительно некрасиво. Я чувствую, что, должно быть, что-то упустил. Во-первых, я полностью повторяюсь в одной строке. Во-вторых, у меня есть этот код в моем представлении. Есть личто-то, что я должен делать в своем контроллере, чтобы помочь мне сохранить чистоту моего взгляда?

Спасибо большое!

<% if Asset.where(:piece_id => piece.id).first 
            my_asset = Asset.where(:piece_id => piece.id).first%>
            <%= piece.id%>
            <%= image_tag my_asset.asset.url(:thumb)%>
     <% end%>

Потому что я ничего не сделал с моим контроллером, чтобы говорить о том,Я опускаю весь этот код. Но вот как выглядят мои модели:

Активы

class Asset < ActiveRecord::Base
    belongs_to :piece
    has_attached_file :asset, :styles => {:large => ['700x700', :jpg], :medium => ['300x300>', :jpg], :thumb => ["100x100>", :jpg]}
end

Кусочки

class Piece < ActiveRecord::Base
    attr_accessible :assets_attributes,:name, :campaign_id,:election_date, :mail_date, :pdf_link, :photo_desc, :photo_stock, :killed, :format, :artist
    belongs_to :client
    has_many :assets
    accepts_nested_attributes_for :assets, :allow_destroy => true
    validates :campaign_id, :presence => true
end

1 Ответ

1 голос
/ 05 августа 2011

Итак, ваша проблема в том, что иногда у части есть миниатюра, а иногда нет, верно?

Я бы согласился, что ваше решение ERB пахнет плохо.Вы можете добавить метод thumb_nail_url к пьесе:

def thumb_nail_url
    asset = assets.first
    asset ? asset.asset.url(:thumb) : nil
end

А затем:

<% thumb_url = piece.thumb_nail_url %>
<% if thumb_url %>
    <%= image_tag thumb_url %>
<% end %>

Вы также можете обернуть вышеупомянутое в помощника:

def piece_thumb_image_tag(piece)
    thumb_url = piece.thumb_nail_url
    thumb_url ? image_tag(thumb_url) : ''
end

а затем:

<%= piece_thumb_image_tag piece %>
...