Anna88
Anna88

Reputation: 355

ActiveModel::ForbiddenAttributesError only when creating a new record

I have upgraded my app rails version from 3.2.13 to 4.2.1 so When ever i am trying to create a new record i am getting ActiveModel::ForbiddenAttributesError

I am using rails4.2.1.

This my controller

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

Whenever i update existing category there is no issue. category updates successfully.

Pls Help!

Thanks

Upvotes: 0

Views: 196

Answers (1)

Anna88
Anna88

Reputation: 355

This error commonly occurs when using CanCan, authorization gem with rails >=4. To overcome this add below code to your application controller

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

source: https://github.com/ryanb/cancan/issues/835#issuecomment-18663815

Upvotes: 1

Related Questions