###問題点
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
何か勘違いなどしてますでしょうか。
よろしくお願いいたします。
回答ではないので、こちらに書きます。簡単なrailsアプリ作って試しましたが、一番上の params.require(:post_data).permit(:default, :menu, datetimes: [] ) で、datetimes もpermitされました。さらに datetimes: [] を消すと、(当たり前ではありますが)「Unpermitted parameter: datetimes」 というエラーメッセージが出たことも確認しました。ということで問題の状況が手元で再現できていないです。
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 (東京 (標準時))"}}}
postmanから叩いたらできました。。なんなんだろう。
ちまちまとすみません。ポストするデータの詰め方に問題がありそうなことがわかりました。console.logで出したものとポストしているデータが違うようです。
解決に近づいていそうな感じでしょうか?ちなみに私のほうではJSONをPOSTするのに、Restlet Client を使いました。投げた JSON は質問に書いてあるのと同じものです。
回答1件
あなたの回答
tips
プレビュー