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

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

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

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

Ruby on Rails

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

1038閲覧

ActionController::ParameterMissingになってしまいます。

kie

総合スコア5

Ruby

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

Ruby on Rails

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/09/14 03:28

編集2021/09/14 08:06

前提・実現したいこと

ruby on railsにてレビューアプリを製作中です。
レビュー投稿フォームから投稿しようとするとエラーメッセージが出てしまいます。

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

ActionController::ParameterMissing in ReviewsController#create param is missing or the value is empty: review Extracted source (around line #32): def review_params params.require(:review).permit(:image,:title,:category_id,:detail,:directer,:starring,:rate).merge(user_id: current_user.id) end Request Parameters: {"authenticity_token"=>"+00Rc221ji6qStsgcJlPYpysXRusc8y5KfNRX4RjW6SW+jgR8OxifOscKHv+lvYfRXT7wGnsTXcnWRGsJyxsrQ==", "image"=> #<ActionDispatch::Http::UploadedFile:0x00007fa9252f5c30 @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"image\"; filename=\"no_image.jpeg\"\r\n" + "Content-Type: image/jpeg\r\n", @original_filename="no_image.jpeg", @tempfile=#<File:/var/folders/ff/b5bwglv53152xq7gvm40wtvr0000gp/T/RackMultipart20210914-24400-1qvk2qa.jpeg>>, "title"=>"a", "detail"=>"a", "category_id"=>"2", "director"=>"a", "starring"=>"a", "rate"=>"", "reviews"=>{"rate"=>"3"}, "commit"=>"レビューを投稿する"}

該当のソースコード

●reviewコントローラー

ruby

1class ReviewsController < ApplicationController 2 3 def index 4 @review = Review.all 5 end 6 7 def new 8 @review = Review.new 9 end 10 11 def create 12 13 @review = Review.new(review_params) 14 if @review.save 15 render json:{ reviews: @review } and return 16 else 17 render :index 18 19 end 20 21 end 22 23 private 24 25 def redirect_root 26 redirect_to root_path unless current_user.id == @review.user_id 27 end 28 29 def review_params 30 params.require(:review).permit(:image,:title,:category_id,:detail,:directer,:starring,:rate).merge(user_id: current_user.id) 31 end 32end

●view index

ruby

1<div class="review-contents"> 2 <header class="review-header"> 3 <%= link_to image_tag('movie-logo.png' , size: '185x50'), "/" %> 4 </header> 5 <div class="review-main"> 6 <h2 class="review-title">映画の情報を入力</h2> 7 <%= form_with(xml: @review, local: true ) do |f| %> 8 9 <%#= render 'shared/error_messages', model: f.object %> 10 11 12 <%# 映画画像 %> 13 <div class="img-upload"> 14 <div class="weight-bold-text"> 15 映画画像 16 <span class="indispensable">必須</span> 17 </div> 18 <div class="click-upload"> 19 <p> 20 クリックしてファイルをアップロード 21 </p> 22 <%= f.file_field :image, id:"review-image" %> 23 24 </div> 25 </div> 26 <%# /映画画像 %> 27 <%# 映画名と説明 %> 28 <div class="new-review"> 29 <div class="weight-bold-text"> 30 映画タイトル 31 <span class="indispensable">必須</span> 32 </div> 33 <%= f.text_area :title, class:"review-text", id:"review-name", placeholder:"映画タイトル(必須 40文字まで)", maxlength:"40" %> 34 <div class="review-explain"> 35 <div class="weight-bold-text"> 36 映画の評価 37 <span class="indispensable">必須</span> 38 </div> 39 <%= f.text_area :detail, class:"review-text", id:"item-info", placeholder:"映画の評価(必須 1,000文字まで)(映画内容、演出、良かった点、悪かった点など)" ,rows:"7" ,maxlength:"1000" %> 40 </div> 41 </div> 42 <%# /商品名と商品説明 %> 43 44 <%# 商品の詳細 %> 45 <div class="review-detail"> 46 <div class="weight-bold-text">映画の詳細</div> 47 <div class="form"> 48 <div class="weight-bold-text"> 49 映画のジャンル 50 <span class="indispensable">必須</span> 51 </div> 52 <%= f.collection_select(:category_id, Category.all, :id, :name, {}, {class:"select-box", id:"item_category"}) %> 53 <div class="weight-bold-text"> 54 監督名 55 <span class="indispensable">必須</span> 56 </div> 57 <%= f.text_area :director, class:"review-text", id:"review-name", placeholder:"監督名", maxlength:"40" %> 58 <div class="weight-bold-text"> 59 主演俳優、主演女優 60 <span class="indispensable">必須</span> 61 </div> 62 <%= f.text_area :starring, class:"review-text", id:"review-name", placeholder:"主演俳優、主演女優", maxlength:"40" %> 63 64 <div class="field" id="star"> 65 66 <%= f.label :rate, "星評価:" %> 67 <%= f.hidden_field :rate, id: :review_star %> 68 <script> 69 $('#star').raty({ 70 size : 36, 71 starOff: '<%= asset_path('star-off.png') %>', 72 starOn : '<%= asset_path('star-on.png') %>', 73 starHalf: '<%= asset_path('star-half.png') %>', 74 scoreName: 'reviews[rate]', <%# rateカラムへの保存 %> 75 half: true, <%# 星半分の入力 %> 76 }); 77 </script> 78 </div> 79 </div> 80 </div> 81 <%# /商品の詳細 %> 82 83 84 <%# 下部ボタン %> 85 <div class="review-contents"> 86 <%= f.submit "レビューを投稿する", class:"review-btn" %> 87 <%=link_to 'もどる', root_path, class:"back-btn" %> 88 </div> 89 <%# /下部ボタン %> 90 </div> 91 <% end %> 92 93 <footer class="review-sell-footer"> 94 <%= link_to image_tag('movie-logo.png' , size: '185x50'), "/" %> 95 <p class="inc"> 96 ©︎MOVARITE,Inc. 97 </p> 98 </footer> 99 </div> 100</div>

●view トップページ

ruby

1<header class='top-page-header'> 2 <div class='search-bar-contents'> 3 <form class="search-form" action="#"> 4 <input class='input-box' placeholder='search...'> 5 <button class="search-button"> 6 <%= image_tag "search.png", class:"search-icon" %> 7 </button> 8 </form> 9 </div> 10 <div class='nav'> 11 12 <% if user_signed_in? %> 13 <li><%= link_to current_user.nickname, "#", class: "user-nickname" %></li> 14 <li><%= link_to 'Post Review', reviews_path, class: "movie-list" %></li> 15 <li><%= link_to 'LogOut', destroy_user_session_path, method: :delete, class: "logout" %></li> 16 <% else %> 17 <li><%= link_to 'LogIn', new_user_session_path, class: "login" %></li> 18 <li><%= link_to 'SignUP', new_user_registration_path, class: "sign-up" %></li> 19 <% end %> 20 21 </ul> 22 </div> 23</header> 24 25<section id="screen1"> 26 <%= link_to image_tag("movie-logo.png", class:"movie-logo-icon"), "/" %> 27 28 <nav> 29 <ul> 30 <li><a href="#">Home</a></li> 31 <li><a href="#">About</a></li> 32 <li><a href="#">Services</a></li> 33 <li><a href="#">Category</a></li> 34 <li><a href="/reviews/index">Review</a></li> 35 </ul> 36 </nav> 37 38 <div class='title-contents'> 39 <p></p> 40 <h2> 41 貴方が映画の評価をしよう 42 </h2> 43 </div> 44 45</section> 46

試したこと

”review_params”のrequire(:review)が問題を起こしていると考え記述を削除しましたが、
そうするとエラーは発生しなくなりましたが、投稿内容が保存されません。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

params.require(:review) に対応した Paramsになっていません。
view の form の書き方がそれに沿っていません。
確認したいので、viewを載せてください。

投稿2021/09/14 06:12

winterboum

総合スコア23567

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

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

kie

2021/09/14 08:06

ご回答ありがとうございます! レビューに関係するviewは現在上記のindexのみで、newなどは制作しておりません・・・。 indexのviewのみではご確認は難しいでしょうか? トップページのviewは追加しました!
winterboum

2021/09/14 09:44

form_with(xml: @review, を form_with(model: @review, に
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問