2017-03-04 5 views
0

私のアプリケーションでは、ユーザーが投稿したレビューがあります。各レビューには多くの写真があります。私が必要とするのは、ユーザーに属するレビューをループし、各レビューに最初の写真を表示することです。IDに基づいて最初のイメージを選択し、(表示)ビューで表示するにはどうすればよいですか?

私はあなたの助けに感謝:)

これはコンソールで動作し、私は正しい写真を返すことができています。レビュー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 %> 

Iはまた、ここ

def firstphoto 
@photo = Photo.where(:review_id => @review_id).pluck(:file_name).first 
end 

reviews_controller.rbにおける最初の写真を得るための方法を定義する試み関連

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に格納され、このスキーマを使用されていますデータベースに格納する。

説明すると、写真はこのコードで正しく/ show.html.erbに正しく表示されます。

<% @review.photos.each do |photo| %> 
<%= image_tag photo.file_name.url %> 
<% end %> 

答えて

1
users_controller.rb showアクションで

@reviews = current_user.reviews 

そしてユーザー/ 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 

これは、あなたが望むことを行います。あなたがまだこの問題に直面している場合は教えてください。

+0

私は「画像」を持っていないので、photos.first.image.urlは使用できません。 私はphotos.first.file_name.urlを試しましたが、未定義のメソッドを返します – Joshua

+0

画像を保存したフィールドを教えてください。私があなたを助けることができるように。イメージフィールドを見つけるのに問題がある場合。画像を保存しているコードを教えてください。私は自分で見つけます。 –

+0

イメージを正しく表示したいですか?それとも名前を表示したいだけですか? –

関連する問題