在我的应用程序中,有用户提交的评论。每条评论都有很多照片。我需要的是遍历属于用户的评论并显示每个评论中的第一张照片。
我感谢您的帮助 :)
这在控制台中有效,我能够返回正确的照片。在评论 1 中有 3 张照片,这正确返回了第一张。
Photo.where(:review_id => 1).pluck(:file_name).first
现在,我试图按原样在users / show.html.erb文件中显示它们,并且不起作用。
<% @user.reviews.each do |review| %>
<%= image_tag review.firstphoto.url %>
<% end %>
我还尝试定义一种方法来获取 review_controller.rb 中的第一张照片
def firstphoto
@photo = Photo.where(:review_id => @review_id).pluck(:file_name).first
end
这里是协会
class Review < ActiveRecord::Base
belongs_to :brand
belongs_to :user
has_many :photos
class Photo < ActiveRecord::Base
belongs_to :review
class User < ActiveRecord::Base
has_many :reviews
照片存储在 S3 中,并使用此模式存储在数据库中。
create_table "photos", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.text "file_name"
t.integer "review_id"
为了说明,使用此代码正确显示在 review/show.html.erb 中的照片。
<% @review.photos.each do |photo| %>
<%= image_tag photo.file_name.url %>
<% end %>
在 users_controller.rb 中显示动作
@reviews = current_user.reviews
然后在 users/show.html.erb 文件中
<% @reviews.each do |review| %>
<%= image_tag review.first_photo %>
<% end %>
现在在 review.rb 模型中创建一个实例方法,如下代码。
def first_photo
photos.first.file_name.url if photos.first.present?
end
这会做你想做的。如果您仍然面临这个问题,请告诉我。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句