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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

1回答

1233閲覧

Ruby on Railsでストロングパラメーターを設定した時に「Unpermitted parameter: :カラム名」が表示されてしまう

jirou6699

総合スコア4

Ruby on Rails 6

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2020/09/06 11:07

前提・実現したいこと

RailsとmySQLを使ってアプリを制作中です。フォーム入力時にストロングパラメータを設定してはいますが、「Unpermitted parameter: :text」というエラーが表示されてしまいます、ストロングパラメーターの記述はしているにもかかわらずbinding.pryでfalseの表示が出てしまいます。
解決方法などアドバイスいただけますでしょうか?

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

ターミナルで発生しているエラーは下記の通りです。

(0.4ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 Processing by AdminsController#create as HTML Parameters: {"authenticity_token"=>"6FliRjLzhJxQEePsQy/LczNj0pkcNus4/POnPsbqhbKTxeNlGpC2zsnfc2x4JdbGXEp7XB7cH2v66UsETcKBzA==", "job"=>{"text"=>"テスト文字テスト"}, "commit"=>"掲載する"} Unpermitted parameter: :text Rendering admins/create.html.haml within layouts/application Rendered admins/create.html.haml within layouts/application (Duration: 0.1ms | Allocations: 14) [Webpacker] Everything's up-to-date. Nothing to do Completed 200 OK in 22ms (Views: 18.7ms | ActiveRecord: 0.0ms | Allocations: 12969)

該当のソースコード

rails

1 .Job-wrapper 2 = form_with model: job, url:admins_path, html: {class: "job-wrapper"}, local: true do |form| 3 .Upper-contents 4 .User-contents__title 5 【案件を入力】 6 = form.text_field :text, maxlength: 64, class: "Upper-contents__name", placeholder: 'ここに文章を入力してください', autocomplete: "off" 7 .Button-wrapper 8 = form.submit '掲載する', class: 'Button-wrapper__button'

該当のコントローラー

rails

1 class AdminsController < ApplicationController 2 def index 3 @jobs = Job.all 4 end 5 6 def new 7 @job = Job.new 8 end 9 10 def create 11 binding.pry 12 @job = Job.create(job_params) 13 end 14 15 private 16 def job_params 17 params.require(:job).permit(:title) 18 end 19 end

試したこと

binding.pryを試してみたところcreateアクションまでPOSTできていますがpermitted:falseとなっています。本来ならこれを解決するためにpermitメソッドを使いtrueにするはずなのでどこがまちがっているのかあまりわかっていません。

rails

1 10: def create 2 => 11: binding.pry 3 12: @job = Job.create(job_params) 4 13: end 5 6[1] pry(#<AdminsController>)> params 7=> <ActionController::Parameters {"authenticity_token"=>"h0iHDcCfDBluSOU++5oTIrluu8XnzjgOo8+b/iH9vuzq7lqLCPYyW0TnNwDQsuc9ss1PO2B67sb7LU7ssKD9kQ==", "job"=>{"text"=>"テストテストテスト"}, "commit"=>"掲載する", "controller"=>"admins", "action"=>"create"} permitted: false> 8[2] pry(#<AdminsController>)> 9

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

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

rails

1 ruby '2.6.5' 2 3# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 4gem 'rails', '~> 6.0.0' 5# Use mysql as the database for Active Record 6gem 'mysql2', '>= 0.5.3' 7# Use Puma as the app server

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

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

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

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

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

guest

回答1

0

StrongParameterが正しいという前提で考えると下記でエラーが出なくなるかと思います。
= form.text_field :title, ・・・・

投稿2020/09/06 11:28

no1knows

総合スコア3365

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

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

jirou6699

2020/09/06 11:46

早速ありがとうございます! form_withの記載が間違っていました、、、修正しところエラーは出なくなったのですが、permitted: falseのままで保存がされません。。。もしよければ他にありそうなまちがいなど教えていただけませんでしょか?
no1knows

2020/09/06 13:13

そのような場合は、createアクション内でbinding.pryを利用してJob.create!(job_params)を実行してみてください。 なにかヒントを得ることができるかもしれません。 https://qiita.com/ozin/items/5968971c9d2b3ab0a84d 念の為、Jobモデルにtitleカラムはありますか? あと理由があってだと思うのですが気になるのはJobsコントローラーでJobモデルを保存するのが一般的かと思います。
jirou6699

2020/09/06 15:18

ありがとうございます、いただいたご意見を参考にやってみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問