【问题标题】:Rails 4: How to get first image(child) from an album(parent) for index pageRails 4:如何从专辑(父)中获取索引页面的第一张图片(子)
【发布时间】:2016-10-29 22:03:18
【问题描述】:

相册有很多图片。为了在索引页面上显示我的所有专辑,我想要一张专辑第一张图片的缩略图。与其在相册中添加附件,我想知道是否有一种方法可以从该特定相册中提取第一张图片。

这是我目前拥有的:

专辑/index.html.erb

<% @albums.each do |a| %>
   <div class="thumbnail">
      <%= link_to image_tag(a.images.first(:thumb)), a %>                     
         <div class="caption">
            <h3><%= a.title %></h3>
               <p><%= a.description %></p>
         </div>
    </div>
<% end %>

models/image.rb

class Image < ActiveRecord::Base

 belongs_to :album

 has_attached_file :photo, 
 styles: { large: "700x700>", medium: "450>", thumb: "200x200>" },
 storage: :s3,
 s3_credentials: Proc.new{ |a| a.instance.s3_credentials }

 validates_attachment_content_type :photo, content_type: /\Aimage\/.*\Z/

 validates_presence_of :title
 validates_presence_of :album_id

 def s3_credentials
    {
      access_key_id:     ENV["AWS_ACCESS_KEY_ID"],
      secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
      s3_region:         ENV["AWS_REGION"],
      bucket:            ENV["S3_BUCKET_NAME"]
    }
 end
end

我收到一个错误“无法将符号转换为整数”,它指向带有 image_tag 的行

【问题讨论】:

  • 检查 a.images 是否真的是一个数组或散列!
  • 试试a.images[0].first(:thumb)
  • @mahatmanich 然后我在尝试&lt;%= link_to image_tag(a.images[0].first(:thumb)), a %&gt; 时收到“undefined method 'first' for #<0x007fca9a4601d8>

标签: ruby-on-rails-4 iteration


【解决方案1】:

这应该是a.images.first.thumb

您要做的是使用:thumb 参数调用first 方法,但它接受整数limithttp://apidock.com/rails/ActiveRecord/FinderMethods/first

编辑:工作代码是a.images.first.photo.url(:thumb)

【讨论】:

  • 这给了我undefined method 'thumb'thumb是带大小参数的回形针方法。
  • 然后试试a.images.first.url(:thumb)
  • 我试过了,我得到了 的“未定义的方法 'url'”。唯一没有引发错误的是a.images.first(1),但它没有给我一张照片,它只是有一个描述图像不同方面(大小、文件类型、album_id 等)的链接。你认为我需要在模型中编写一个方法并使用它吗?
  • a.images.first(1) 等价于a.images.first。您能否从schema.rb 发布Image 模型及其数据库定义的代码?
  • 很抱歉,我忘了补充,包含回形针附件的列是photo。我也尝试将其添加到逻辑中,但没有运气。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-28
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多