在index.html.erb中获取回形针缩略图的更好方法

时间:2011-08-05 19:20:31

标签: ruby-on-rails-3 paperclip

我几个小时都在苦苦挣扎。在某些背景下,我设置了回形针,请记住我有一天可能想要添加多个附件。我按照艾默生的截屏视频来帮助我搞清楚。 (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 个答案:

答案 0 :(得分:1)

所以你的问题是,有时一件有缩略图,有时却不是,对吗?

我同意你的ERB解决方案闻起来很糟糕。您可以在Piece:

中添加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 %>