2

昨夜、Rails 4 で遊び始めました。そして、いくつかの変更に慣れるために、簡単なブログ タイプのアプリを作成しています。デフォルトの足場で作業する投稿があります。

スキャフォールディングなしでコメントを追加することにしました。投稿にコメントを保存しようとすると、このエラーが発生します。

ActiveModel::ForbiddenAttributesError in CommentsController#create

Request Params ON エラー ページ:

{"utf8"=>"✓",
 "authenticity_token"=>"jkald9....",
 "comment"=>{"commenter"=>"Sam",
 "body"=>"I love this post!"},
 "commit"=>"Create Comment",
 "post_id"=>"1"}

コメント コントローラーの create アクションは次のとおりです。

    class CommentsController < ApplicationController
        def create
            @post = post.find(params[:post_id])
            @comment = @post.comments.create(params[:comment])
            redirect_to post_path(@post)
        end

        private

        def comment_params
          params.require(:comment).permit(:commenter, :body, :post_id)
        end
    end

これが私のコメントの非常に基本的な移行です。

class CreateComments < ActiveRecord::Migration
  def change
    create_table :comments do |t|
      t.string :commenter
      t.text :body
      t.references :post, index: true

      t.timestamps
    end
  end
end

強く型付けされたパラメーターの何が間違っていますか? それとも、Rails 4 で変更されたもので、私が見逃しているものがあるのでしょうか?

4

2 に答える 2

4

少し見落としがありますが、他の誰かが同様のRails 3コードをRails 4に移植する作業をしている場合に備えて、この質問に答えると思いました.

次のように、comment_params を大量割り当てに渡す必要があります。

@comment = @post.comments.create(comment_params)
于 2013-06-18T22:16:23.057 に答える