前提・実現したいこと
プログラミング初心者です。はじめて質問させていただきます。
Railsでレッスンモデルで複数画像を投稿するシステムを実装したく以下のような形で実装している最中です。(画像投稿はcarrirwaveを使用しています)
Lesson 親モデル
LessonImage 子モデル
・image
・lesson_id
まず複数投稿を実装する前に画像1枚で投稿できるかテストしている最中に、コンソールでデータベースの中身を確認するとimageカラムに保存はされているもののViewに表示できず、その後も画像の表示方法がわからなかったため質問させていただきました。
簡単な文法ミスとかでしたらすみません。
発生している問題・エラーメッセージ
ネストした子モデルの呼び出し方がいまいちわかりません。
Lessonモデルとは別のUserモデルでは画像の呼び出しはできています。(こちらはUser内にimageカラムを用意してあります)
if文でlesson_imageのimageに画像がある場合は表示されるようにしているのですが、画像が保存されているはずのlessonページにアクセスしても画像が表示されません。
いくつか試してみたのですが、ネストした子モデルの呼び出し方が間違っていると思い確認していただきたいです。
該当のソースコード
lesson.rb
Ruby
1 2class Lesson < ApplicationRecord 3 belongs_to :user 4 has_many :lesson_images 5 6 accepts_nested_attributes_for :lesson_images, allow_destroy: true 7end 8
lesson_image.rb
Ruby
1class LessonImage < ApplicationRecord 2 belongs_to :lesson 3 mount_uploader :image, ImageUploader 4end
lessons_controller.rb(抜粋)
Ruby
1 def show 2 @lesson = Lesson.find(params[:id]) 3 @user = User.find_by(id: @lesson.user_id) 4 @lesson_image = LessonImage.find_by(params[:id]) 5 end 6 7 def new 8 @lesson = Lesson.new 9 @lesson_images = @lesson.lesson_images.build 10 end 11 12 def create 13 @lesson = Lesson.new(lesson_params) 14 if @lesson.save 15 redirect_to lessons_path 16 else 17 render :new 18 end 19 end 20 21 def edit 22 end 23 def update 24 if @lesson.update(lesson_params) 25 redirect_to lessons_path 26 else 27 render :edit 28 end 29 end 30 31 private 32 def lesson_params 33 params.require(:lesson).permit(:title,:explain,:price,lesson_images_attributes: [:id, :lesson_id, :image]).merge(user_id: current_user.id) 34 end 35
レッスンのshow.html
Ruby
1<p><%= @lesson.title %></p> 2<p><%= @lesson.price %></p> 3<p><%= @lesson.explain %></p> 4<p><%= @lesson.user_id %></p> 5 6 <% if @lesson_image.image.blank? %> 7 <%= image_tag "" %> 8 <% else %> 9 <%= image_tag @lesson_image.image.url %> 10 <% end %> 11 12<% if @lesson.user_id == current_user.id %> 13 <%= link_to "編集", edit_lesson_path %> 14<% end %>
試したこと
if文を消して直接image_tagを使用するとArgumentErrorになるため、子モデルの中身の渡し方がいけないのかと思っているのですが、いまいち原因をつかめていません。
大変初歩的な質問かもしれませんが、回答いただけますと助かります。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
Rails 6.1.4.1
ruby 3.0.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/09 20:48