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

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

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

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

Q&A

解決済

1回答

709閲覧

Unpermitted parameterが解消できない!

subchan

総合スコア24

Ruby on Rails 5

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

0グッド

0クリップ

投稿2018/01/08 17:11

###問題点
railsへのポストでUnpermitted parameterが出ます。postしているデータは配列です。

###アプリ構成
※全てAWS上

  • バックエンド:

APサーバ:Rails(viewは使わない、ActiveRecordはなし)、EC2(Amazon linux)
DB:postgresql(RDS)

  • フロントエンド:html、jquery(s3に配置し、APサーバへpostする)

###POSTしたデータ

{ "post_data": { "menu": "1", "datetimes": [ "2018-01-16T15:00:00.000Z", "2018-01-29T15:00:00.000Z", "2018-01-21T15:00:00.000Z" ] } }

###確認したこと

  • controllers> doctors_controller.rb

※試したこと(下記をひとつづつ順番に。。最初の2つでいけるかと思ったんですが。。)
datetimes以外は大丈夫です。

… private def receive_params # params.require(:post_data).permit(:default, :menu, datetimes: [] ) # params.require(:post_data).permit(:default, :menu, :datetimes=>[] ) # params.require(:post_data).permit(:default, :menu, datetimes: {[]} ) # params.require(:post_data).permit(:default, :menu, {datetimes: [:id]} ) # params.require(:post_data).permit(:default, :menu, datetimes: [:id] ) # params.permit(:default, :menu, datetimes: [] ) end

何か勘違いなどしてますでしょうか。
よろしくお願いいたします。

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

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

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

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

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

jun68ykt

2018/01/08 18:19

回答ではないので、こちらに書きます。簡単なrailsアプリ作って試しましたが、一番上の params.require(:post_data).permit(:default, :menu, datetimes: [] ) で、datetimes もpermitされました。さらに datetimes: [] を消すと、(当たり前ではありますが)「Unpermitted parameter: datetimes」 というエラーメッセージが出たことも確認しました。ということで問題の状況が手元で再現できていないです。
subchan

2018/01/09 01:22 編集

jun68yktさん Unpermitted parameterとならない件、ありがとうございます。他に原因があるということでしょうか。。 念のため、rails側に来ているデータを表示します。 Parameters: {"post_data"=>{"menu"=>"1", "datetimes"=>{"0"=>"Tue Jan 16 2018 00:00:00 GMT+0900 (東京 (標準時))", "1"=>"Sun Jan 21 2018 00:00:00 GMT+0900 (東京 (標準時))", "2"=>"Mon Jan 29 2018 00:00:00 GMT+0900 (東京 (標準時))"}}}
subchan

2018/01/09 04:30

postmanから叩いたらできました。。なんなんだろう。
subchan

2018/01/09 07:47

ちまちまとすみません。ポストするデータの詰め方に問題がありそうなことがわかりました。console.logで出したものとポストしているデータが違うようです。
jun68ykt

2018/01/09 08:09

解決に近づいていそうな感じでしょうか?ちなみに私のほうではJSONをPOSTするのに、Restlet Client を使いました。投げた JSON は質問に書いてあるのと同じものです。
guest

回答1

0

自己解決

jun68yktさんのやり方で解決しました。

投稿2018/03/17 08:00

subchan

総合スコア24

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問