質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

Q&A

0回答

857閲覧

railsでcocoonを使用して追加したデータがDBに保存できません。

toya0129

総合スコア4

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

0グッド

0クリップ

投稿2020/02/26 18:22

前提・実現したいこと

railsでポートフォリオを作成しています。viewはslimで記述しています。
作品を投稿する機能を実装中に画像を複数枚アップロードできるように実装しようとcocoonを使いました。

発生している問題・エラーメッセージ

ですが追加ボタンを押して出た要素に画像を入れてもパラメータに値が入らずDBに保存できませんでした。

Parameters: {"utf8"=>"✓", "authenticity_token"=>"LXM4++79Y0Cwxbh2+bFsSVLBAunNYbyx6V69PcAP5xNQuTvGEZcPY362Sxhg44O5R19FKeQrHkXa1Li/EXN39Q==", "portfolio"=>{"title"=>"c", "software"=>"", "subject"=>"", "start_time"=>"2020-02-13", "end_time"=>"", "description"=>"c", "hp_url"=>"", "youtube_url"=>"", "github_url"=>"", "note"=>"", "sort"=>""}, "commit"=>"保存する"}

該当のソースコード

model

1class Portfolio < ApplicationRecord 2 has_many :portfolio_images, dependent: :destroy 3 before_validation :sort_num, if: :check_sort? 4 5 accepts_nested_attributes_for :portfolio_images, allow_destroy: true, reject_if: :all_blank 6end

model

1class PortfolioImage < ApplicationRecord 2 belongs_to :portfolio 3 mount_uploader :image, ImageUploader 4end

view

1**_form.html.slim** 2 3table.table.admin_portfoio 4 = form_with model: portfolio, url: url_path, local: true do |f| 5 ... 省略 ... 6 tr 7 th = f.label '画像' 8 td 9 .image_area 10 = f.fields_for :portfolio_images do |image| 11 = render 'portfolio_image_fields', f: image 12 .link 13 = link_to_add_association '画像を追加', f, :portfolio_images, partial: 'portfolio_image_fields', class: 'btn btn-primary',data: { association_insertion_node: '.image_area', association_insertion_method: 'append'} 14 15 ... 省略 ... 16 17 td colspan=2 = f.submit '保存する', class: "form_button", data: {disable_with: '保存中…'} 18 tr.button 19 td colspan=2 = button_to '戻る', admin_portfolio_index_path, class: "form_button", method: :get

view

1**_portfolio_image_fields.html.slim** 2 3.nested-fields 4 = f.file_field :image 5 = link_to_remove_association '画像の削除', f, class: 'btn btn-danger'

controller

1 **portfolio_controller.rb** 2 3 def new 4 @portfolio = Portfolio.new 5 #@portfolio.portfolio_images.build 6 end 7 8 def create 9 @portfolio = Portfolio.new(portfolio_params) 10 11 if @portfolio.save 12 flash.now[:success] = "データの保存に成功しました" 13 redirect_to admin_portfolio_index_path 14 else 15 flash.now[:error] = "データの保存に失敗しました" 16 render :new 17 end 18 end 19... 省略 ... 20 21private 22 def portfolio_params 23 params.require(:portfolio).permit(:title, :software, :subject, :start_time, :end_time, :description, :note, :hp_url, :youtube_url, :github_url, :sort, portfolio_images_attributes: [:id, :image, :_destroy]) 24 end

試したこと

newのコメント部分(build)を使うと1つは保存されますが、ボタンで追加したものは保存されません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問