如何在rails中使用link_to_unless来获取文件类型

时间:2014-08-19 23:23:35

标签: ruby-on-rails link-to

有没有简单的方法可以使用link_to_unless来排除GIF?基本上,我希望链接对于上传的GIF图像不活动/删除。

<span itemprop="photo">
   <%= link_to image_tag(place.image.url(:medium)), place, class: "hover" %>
</span>

我正在使用paperclip gem for S3,这就是我在模型中添加图像的内容。我没有专门用于图像的模型。

has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }
validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]

2 个答案:

答案 0 :(得分:0)

您可以通过Attachment#content_type方法获取内容类型。您可以测试图像是否为带有

的gif
place.image.content_type == 'image/gif'

因此你想要的是

<span itemprop="photo">
   <%= link_to_unless place.image.content_type == 'image/gif', image_tag(place.image.url(:medium)), place, class: "hover" %>
</span>

link_to_unless的第一个参数只是一个条件。在这种情况下,它会检查图片网址是否以.gif结尾。

然而,这对于视图看起来太过逻辑。我建议把它放在装饰器中。

答案 1 :(得分:0)

使用以下代码:

<%= link_to_unless place.image.url(:medium).match(/\.gif$/), image_tag(place.image.url(:medium)), place, class: "hover" %>

或使用辅助方法如下:

def image_not_gif(url)
  unless url.match(/\.gif$/)
    image_tag(place.image.url(:medium)
  end
end

然后使用此代码:

<%= link_to image_not_gif(place.image.url(:medium)), place, class: "hover" %>