0

app rails のバージョンを 3.2.13 から 4.2.1 にアップグレードしたので、新しいレコードを作成しようとすると、ActiveModel::ForbiddenAttributesError

rails4.2.1を使用しています。

これが私のコントローラー

class CategoriesController < ApplicationController
  load_and_authorize_resource

  before_action :set_category, only: [:edit, :show, :update, :destroy]

  def index

  end

  def show
  end

  def new
    @category = Category.new
  end

  def create
    @category = Category.new(category_params)
    if @category.save
      redirect_to @category, :notice => "Successfully created category."
    else
      render :action => 'new'
    end
  end

  def edit
  end

  def update
    if @category.update_attributes(category_params)
      redirect_to @category, :notice  => "Successfully updated category."
    else
      render :action => 'edit'
    end
  end

  def destroy
    @category.destroy
    redirect_to categories_url, :notice => "Successfully destroyed category."
  end

  private

    def set_category
      @category = Category.find(params[:id])
    end

    def category_params
      params.require(:category).permit(:name)
    end
end

既存のカテゴリを更新するたびに問題はありません。カテゴリが正常に更新されました。

助けてください!

ありがとう

4

1 に答える 1

1

このエラーは、CanCan、認可 gem を rails >=4 で使用している場合によく発生します。これを克服するには、以下のコードをアプリケーション コントローラーに追加します。

before_action do  
  resource = controller_name.singularize.to_sym
  method = "#{resource}_params"
  params[resource] &&= send(method) if respond_to?(method, true)
end 

ソース: https://github.com/ryanb/cancan/issues/835#issuecomment-18663815

于 2016-03-02T11:00:11.593 に答える