Rails 5.0.0.1にて開発しています。
lesson model
がhas_one :image, class_name: "LessonImage", dependent: :destroy
にて画像を持っています。
画像は問題なく表示され、更新(edit
とupdate
)もできるのですが、何故か新規作成('new'と'create')ができません。
添付キャプチャの通り、ファイルは選択できますが、'create lesson'を押すと、反応なく、エラー画面もでません。
画像を入れなければ、新規作成でき、作成した後にeditを使えば写真がuploadできます。
ruby
1# 以下 new.html.erb 2<%= form_for [:admin, @lesson] do |form| %> 3<%= render "form", form: form %> 4<%= form.submit %> 5<% end %> 6 7# 以下_form.html.erb 問題のある画像部分のみ記載します。 8<%= form.fields_for :image do |imgf| %> 9<%= imgf.label :uploaded_image %> 10<%= imgf.file_field :uploaded_image %> 11<% if !imgf.object.new_record? && imgf.object.errors.empty? %> 12<%= lesson_image_tag @lesson, class: "lesson-img"%> 13<%= imgf.check_box :_destroy %> 14<%= imgf.label :_destroy %> 15<% end %> 16<% end %>
ruby
1#lessons_controller.rb 2class Admin::LessonsController < Admin::Base 3 def index 4 @lessons = Lesson.order(starts_at: :desc) 5 end 6 7 def show 8 @lesson = Lesson.find(params[:id]) 9 if params[:format].in?(["jpg", "png", "gif"]) 10 send_image 11 else 12 render "show" 13 end 14 end 15 16 def new 17 @lesson = Lesson.new 18 @lesson.build_image 19 end 20 21 def edit 22 @lesson = Lesson.find(params[:id]) 23 @lesson.build_image unless @lesson.image 24 end 25 26 def create 27 @lesson = Lesson.new(lesson_params) 28 if @lesson.save 29 redirect_to [:admin, @lesson], notice: "新しい講座を登録しました。" 30 else 31 render 'new' 32 end 33 end 34 35 def update 36 @lesson = Lesson.find(params[:id]) 37 @lesson.assign_attributes(lesson_params) 38 if @lesson.save 39 redirect_to [:admin, @lesson], notice: "講座を編集しました。" 40 else 41 render 'edit' 42 end 43 end 44 45 def destroy 46 lesson = Lesson.find(params[:id]) 47 lesson.destroy 48 redirect_to :admin_lessons, notice: "講座を削除しました。" 49 end 50 51 private 52 def lesson_params 53 attrs = [:title, :place, :body, :starts_at, :ends_at] 54 attrs << {image_attributes: [:_destroy, :id, :uploaded_image]} 55 params[:lesson].permit(attrs) 56 end 57 58 def send_image 59 if @lesson.image.present? 60 send_data @lesson.image.data, type: @lesson.image.content_type, disposition: "inline" 61 else 62 raise NotFound 63 end 64 end 65end
あなたの回答
tips
プレビュー