状況
Lesson(model)
がLessonImage(model、画像です)
との間にhas_many / blongs_to(コードは以下に記載)
の関連付けを持っています。- 画像Uploadには、
Carrierwave
を利用し、新規にLessonを作成する際に、accepts_nested_attributes_for
とfields_for
を使って同時に子レコードであるLessonImage
も作成しています。 - リスト
Lesson
がhas_many
で所有するLessonImage
の写真は0-3枚としています。画像をネストして複数アップロードすることはできています。 - 1つの
Lesson
に対して最大3つの'LessonImage'が付いており、それぞれは、例えば@lesson.lesson_images[0]
や@lesson.lesson_images.last
で呼べるのですが、以下記載の通りエラーが出てしまいます。form_for
とfields_for
を利用していることも原因な気もしておりますが、解決策わからず、御指南頂けますと助かります。
出てしまうエラー
undefined method url' for #<LessonImage:0x007fdeb2b92c68>
といったエラーが出てしまい、各種記事を検索して試していますがうまくいきません。
親である@lessonには子であるlesson_imagesが入っていることは、以下の通り確認しております。
@lesson.lesson_images LessonImage Load (0.6ms) SELECT "lesson_images".* FROM "lesson_images" WHERE "lesson_images"."lesson_id" = $1 [["lesson_id", 45]] => [#<LessonImage:0x007ff5b3f6a0a8 id: 7, lesson_id: 45, lesson_image: "a.JPG", created_at: Wed, 12 Apr 2017 22:58:18 JST +09:00, updated_at: Thu, 13 Apr 2017 08:41:47 JST +09:00>, #<LessonImage:0x007ff5b3f69f68 id: 8, lesson_id: 45, lesson_image: "f.jpg", created_at: Wed, 12 Apr 2017 22:58:45 JST +09:00, updated_at: Thu, 13 Apr 2017 08:41:47 JST +09:00>, #<LessonImage:0x007ff5b3f69e28 id: 9, lesson_id: 45, lesson_image: "v.jpg", created_at: Wed, 12 Apr 2017 23:03:33 JST +09:00, updated_at: Thu, 13 Apr 2017 08:43:03 JST +09:00>]
ruby
1関連付け 2#Lesson Model 3has_many :lesson_images, dependent: :destroy 4accepts_nested_attributes_for :lesson_images, allow_destroy: true 5 6#LessonImage Model 7class LessonImage < ApplicationRecord 8 belongs_to :lesson, optional: true(#Rails 5.0.0.1を利用) 9 mount_uploader :lesson_image, LessonImageUploader 10end 11 12#LessonImageのテーブル 13# Table name: lesson_images 14# 15# id :integer not null, primary key 16# lesson_id :integer 17# lesson_image :string 18# created_at :datetime not null 19# updated_at :datetime not null
ruby
1#edit.html.erb 2<%= form_for [:user, @lesson], url: :user_user_lesson, html: {multipart: true} do |f| %> 3 <%= render "form", f: f %> 4 <%= f.submit "編集する" %> 5 6#_form.html.erb 7<%= f.label :title, "レッスン名" %> 8<%= f.text_field :title %>等、lessonモデルのcolumnが並びます。 9 10<%= f.fields_for :lesson_images do |img|%> 11<%= image_tag img.object.url %> 12<%= img.check_box :remove_lesson_image %>画像を削除する<br> 13<%= img.label :lesson_image, "レッスン写真" %> 14<%= img.file_field :lesson_image %> 15<%= img.label :lesson_image, "レッスン写真" %> 16<%= img.file_field :lesson_image %> 17<% end %> 18
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/12 23:08
2017/04/12 23:20
2017/04/13 00:35 編集
2017/04/13 03:01
2017/04/13 03:19
2017/04/13 03:49