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

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

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

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

Ruby on Rails 6

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

Ruby on Rails

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

Q&A

解決済

1回答

4169閲覧

[Ruby on Rails 6]Unpermitted parameter: :images

Kazu_p8619

総合スコア9

Ruby

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

Ruby on Rails 6

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/04/11 11:02

編集2020/04/11 12:28

前提・実現したいこと

Ruby on Railsで簡単な写真投稿サイトを作成しております。

以下の写真のような新規投稿画面にて写真を選択後、投稿ボタンを押しても、
「Unpermitted parameter: :images」のエラーが出てしまいます。

写真の選択はできているはずなのですが、
投稿に失敗する原因がわからないため、ご質問させていただきます。
初心者のため至らない点が多いですがよろしくお願いします。

イメージ説明

該当のソースコード

controller

1class PostsController < ApplicationController 2 before_action :authenticate_user!, only: %i[create destroy new] 3 before_action :correct_user, only: [:destroy] 4 5 def index 6 @q = Post.ransack(params[:q]) 7 @posts = if @tag_name = params[:tag_name] 8 Post.tag_search(params[:tag_name]).page(params[:page]).per(PER) 9 elsif params[:q] 10 @q.result.order('created_at DESC').page(params[:page]).per(PER) 11 else 12 Post.page(params[:page]).per(PER) 13 end 14 end 15 16 def new 17 @post = current_user.posts.build 18 end 19 20 def show 21 @post = Post.find(params[:id]) 22 current_user&.footprints&.create(post_id: @post.id) 23 @like = Like.new 24 @comment = Comment.new 25 @comments = @post.comments 26 end 27 28 def create 29 @post = current_user.posts.build(posts_params) 30 if @post.save 31 redirect_to current_user, flash: { success: "投稿しました。" } 32 else 33 render :new 34 end 35 end 36 37 def edit 38 p params[:id] 39 @post = Post.find(params[:id]) 40 end 41 42 def update 43 @post = Post.find(params[:id]) 44 if @post.update(posts_params) 45 redirect_to root_path 46 else 47 render :edit 48 end 49 end 50 51 def destroy 52 @post = Post.find(params[:id]) 53 @post.destroy 54 flash.now[:success] = "投稿を削除しました。" 55 end 56 57 58 private 59 60 def posts_params 61 params.require(:post).permit( 62 :title, 63 :content, 64 :images, 65 :tag_list 66 ) 67 end 68 69 def correct_user 70 @post = Post.find(params[:id]) 71 redirect_to(root_url) unless @post.user == current_user 72 end 73end

view

1<%= javascript_include_tag 'preview_js' %> 2<div> 3 <h2 class="font-weight-bold text-center">投稿フォーム</h2> 4 <div class="form-group mt-5"> 5 <%= render "layouts/error_message", object: @post %> 6 <%= form_for(@post, class: "form") do |f| %> 7 8 <div class=text-center> 9 <div> 10 <% if @post.images.present? %> 11 <%= image_tag post.images.url, id: :js_imgPrev, size:"600x450", class:"post-prev img-fluid" %> 12 <% else %> 13 <%= image_tag asset_path("defaultPicture.jpg"), id: :js_imgPrev, size:"300x450", class:"post-prev img-fluid" %> 14 <% end %> 15 </div> 16 <label for="js_presentImg" class="btn btn-warning"><span>画像を選択</span> 17 <%= f.file_field :images, id: :js_presentImg, autofocus: true, multiple: true, 18 class:"form-control-file", style: "display:none;" %> 19 </label> 20 </div> 21 22 <div class="form-group"> 23 <label for="name">Title</label> 24 <%= f.text_field :title, placeholder: "タイトル", class:"form-control" %> 25 </div> 26 27 <div class="form-group"> 28 <label for="name">説明</label> 29 <%= f.text_area :content, placeholder: "説明", class:"form-control" %> 30 </div> 31 32 <div class="form-group"> 33 <label for="name">タグ</label> 34 <%= f.text_field :tag_list, value: @post.tag_list.join(','), placeholder: "タグ(カンマ区切り)", class: "form-control"%> 35 </div> 36 37 <div class="actions text-center"> 38 <%= f.submit "投稿", class: "btn btn-primary" %> 39 </div> 40 <% end %> 41 </div> 42</div>

model

1class Post < ApplicationRecord 2 belongs_to :user 3 default_scope -> { order(created_at: :desc) } 4 mount_uploaders :images, ImageUploader 5 6 validates :user_id, presence: true 7 validates :images, presence: { message: 'が選択されていません' } 8 validates :title, presence: true, length: { maximum: 50 } 9 validates :content, length: { maximum: 140 } 10 11 # like関係 12 has_many :likes, dependent: :destroy 13 has_many :liked_users, through: :likes, source: :user 14 # comment 15 has_many :comments, dependent: :destroy 16 # tag 17 acts_as_taggable 18 19 def self.search(search) 20 where(['title LIKE ?', "%#{search}%"]) 21 end 22 23 def self.tag_search(tag_name) 24 tagged_with(tag_name.to_s) 25 end 26end 27

DB

1 create_table "posts", force: :cascade do |t| 2 t.text "content" 3 t.integer "user_id" 4 t.datetime "created_at", precision: 6, null: false 5 t.datetime "updated_at", precision: 6, null: false 6 t.string "images" 7 t.string "title" 8 t.index ["user_id"], name: "index_posts_on_user_id" 9 end

Log

1Started POST "/posts" for ::1 at 2020-04-11 19:57:09 +0900 2Processing by PostsController#create as HTML 3 Parameters: {"authenticity_token"=>"qHtHLXOZ3a9KquJifCIm8ncUio+2eAfRsHxoLpX8mZYUK7L2dldjZrDd3dXMAwv/sTMXi4gArOw3DbRdCdkTYg==", "post"=>{"images"=>[#<ActionDispatch::Http::UploadedFile:0x00007ff246578560 @tempfile=#<Tempfile:/var/folders/lh/yyn1dsls4r31qfjwv5thnpnw0000gn/T/RackMultipart20200411-88456-4dr8dx.jpg>, @original_filename="top.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"post[images][]\"; filename=\"top.jpg\"\r\nContent-Type: image/jpeg\r\n">], "title"=>"title", "content"=>"説明", "tag_list"=>"aa"}, "commit"=>"投稿"} 4 User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]] 5Unpermitted parameter: :images 6 Rendering posts/new.html.erb within layouts/application 7 Rendered layouts/_error_message.html.erb (Duration: 0.3ms | Allocations: 131) 8 Rendered posts/new.html.erb within layouts/application (Duration: 17.5ms | Allocations: 2401) 9[Webpacker] Everything's up-to-date. Nothing to do 10 Rendered layouts/_header.html.erb (Duration: 1.5ms | Allocations: 935) 11 Rendered layouts/_footer.html.erb (Duration: 0.0ms | Allocations: 5) 12Completed 200 OK in 208ms (Views: 30.5ms | ActiveRecord: 0.2ms | Allocations: 151950)

補足情報(FW/ツールのバージョンなど)

Ruby:2.6.5
Rails:6.0.2.1
写真投稿機能:carrierwave

### 追記

Log

1Started POST "/posts" for ::1 at 2020-04-11 21:24:46 +0900 2Processing by PostsController#create as HTML 3 Parameters: {"authenticity_token"=>"fW38d+wZ0qCV5/BJWQsd5NdN8VB13ANqsEQO3HXYSV3g/xNL2CmZE0wmAyZGZhtxvA3sAk38orgqxYQiIWyDgQ==", "post"=>{"images"=>[#<ActionDispatch::Http::UploadedFile:0x00007f9daae2ec90 @tempfile=#<Tempfile:/var/folders/lh/yyn1dsls4r31qfjwv5thnpnw0000gn/T/RackMultipart20200411-89532-15g8boh.jpg>, @original_filename="top.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"post[image][]\"; filename=\"top.jpg\"\r\nContent-Type: image/jpeg\r\n">], "title"=>"title", "content"=>"説明", "tag_list"=>"aa"}, "commit"=>"投稿"} 4 User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 2], ["LIMIT", 1]] 5 Rendering posts/new.html.erb within layouts/application 6 Rendered layouts/_error_message.html.erb (Duration: 0.4ms | Allocations: 236) 7 Rendered posts/new.html.erb within layouts/application (Duration: 17.5ms | Allocations: 2505) 8[Webpacker] Everything's up-to-date. Nothing to do 9 Rendered layouts/_header.html.erb (Duration: 1.5ms | Allocations: 935) 10 Rendered layouts/_footer.html.erb (Duration: 0.1ms | Allocations: 5) 11Completed 200 OK in 39ms (Views: 28.5ms | ActiveRecord: 0.1ms | Allocations: 13308)

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

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

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

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

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

guest

回答1

0

ベストアンサー

logをみているとimagesは配列になっているのでStrong Parameterを配列にしてはいかがでしょうか?

log

1"post"=>{"images"=>[・・・,・・・,・・・], #←ここです。

投稿2020/04/11 11:27

no1knows

総合スコア3365

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

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

Kazu_p8619

2020/04/11 12:32

ご回答いただきありがとうございます! ご回答いただいた方法を試してみたところ、「Unpermitted parameter: :images」がなくなりましたが、追記のようなログになり、まだ投稿に失敗してしまいます。。。
no1knows

2020/04/11 13:08

> Rendering posts/new.html.erb within layouts/application > Rendered layouts/_error_message.html.erb (Duration: 0.3ms | Allocations: 131) 上記のようにrender newされているので投稿に失敗していますね。 上記の2行目のエラーメッセージはどのようになっているでしょうか? あと下記で実際どのような値がパラメータに入っているかも確認いただいたほうが良いかもしれません。 自分でデバッグができるようになると開発が捗るので・・・ https://qiita.com/tomoharutt/items/6b12af3dc5eb8dfb9801
Kazu_p8619

2020/04/12 09:29

translation missing: ja.errors.messages.mini_magick_processing_errorというメッセージが表示されています。 ありがとうございます!参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問