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

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

ただいまの
回答率

89.09%

rails 配列のパラメーターを保存したい。 Unpermitted parameter

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 132

otterminalk

score 0

collection_check_boxesを使用して多対多のカテゴリづけをしています。
投稿→投稿確認画面に行く際はパラメーターの受け渡しはできています。
しかし投稿作成した際にUnpermitted parameter: :category_idsと出てしまい保存ができていない状態です。
解決方法をご存知の方がいらっしゃいましたらご教示お願いいたします。

posts.controller.rbでは配列で受け取れるよう許可しているつもりなのですが、、、

posts.controller.rb

class PostsController < ApplicationController
  before_action :authenticate_user!

  def new 
    @post = Post.new
    @post.post_category_relations.build
  end

  def index
    @post = Post.limit(4).order('created_at DESC')
  end

  def create
    @post = Post.new(post_params)
    if
      @post.save
      redirect_to @post
      flash[:notice] = "投稿が完了しました。"
    else
      render :new
    end
  end

  def show
    @post = Post.find(params[:id])
  end


  def confirm
    @post = Post.new(post_params)
    return if @post.valid?
    flash.now[:alert] = '入力に不備がありました。'
    render :new
  end

  def back
    @post = Post.new(post_params)
    render :new
  end

  private

  def post_params
    params.require(:post).permit(:post_photo,
                                  :post_photo_cache,
                                  :place_name,
                                  :area,
                                  :street_address,
                                  :time,
                                  :regular_holiday,
                                  :url,
                                  :station,
                                  :shop_name,
                                  category_ids: []).merge(user_id: current_user.id )
  end
end

こちらがログです。

 Parameters: {"utf8"=>"✓", "authenticity_token"=>"1QnvUVOQP/Pj4eB66dsXOnBnJJA2zMIvDWfP5OX8kfWTckCtt3lYdIBzrBF3rwcNTZ+bsFuRQk3n3Vz/b//Fmg==", "post"=>{"area"=>"確認", "station"=>"", "place_name"=>"---", "post_photo_cache"=>"1591520530-1-0109-4408/sample6.jpeg", "shop_name"=>"", "street_address"=>"", "time"=>"", "regular_holiday"=>"", "url"=>"", "category_ids"=>"1 2"}, "commit"=>"投稿する"}
web_1  |   User Load (7.9ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
web_1  |   ↳ /usr/local/bundle/ruby/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/log_subscriber.rb:98
web_1  | Unpermitted parameter: :category_ids

値が取得できているのにも関わらず保存ができません。

確認画面の表記がこちらです。

= form_for :post, url: new_post_path do |f|
      = f.hidden_field :area
      = f.hidden_field :station
      = f.hidden_field :place_name
      = f.hidden_field :post_photo_cache
      = f.hidden_field :shop_name
      = f.hidden_field :street_address
      = f.hidden_field :time
      = f.hidden_field :regular_holiday
      = f.hidden_field :url
      = f.hidden_field :category_ids
      div[style="text-align: center;"]
        = f.submit "入力画面に戻る", class: "btn-back" 
    = form_for :post, url: posts_path do |f|
      = f.hidden_field :area
      = f.hidden_field :station
      = f.hidden_field :place_name
      = f.hidden_field :post_photo_cache
      = f.hidden_field :shop_name
      = f.hidden_field :street_address
      = f.hidden_field :time
      = f.hidden_field :regular_holiday
      = f.hidden_field :url
      = f.hidden_field :category_ids
      div[style="text-align: center;"]
        = f.submit "投稿する", class: "btn btn-square"

おかしな点などあった場合にはご指摘お願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • winterboum

    2020/06/07 21:06

    model間の関係がわからないので、modelの関連定義関連部分を載せてください

    キャンセル

まだ回答がついていません

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

  • ただいまの回答率 89.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る