Ruby on rails 使用@package作为变量名时出现NoMethodError

Ruby on rails 使用@package作为变量名时出现NoMethodError,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个名为Package的模型,该代码位于Admin::PackagesController中 def new @package = Package.new end 这将抛出一个NoMethodError,其中包含消息“undefined method`[]”for nil:NilClass,突出显示定义@package的行 当我为变量使用另一个名称时,或者在Rails控制台中运行同一行时,不会发生相同的错误 这是在Rails4上。控制器的完整代码如下所示 class Admin::Pa

我有一个名为Package的模型,该代码位于Admin::PackagesController中

def new
  @package = Package.new
end
这将抛出一个NoMethodError,其中包含消息“undefined method`[]”for nil:NilClass,突出显示定义@package的行

当我为变量使用另一个名称时,或者在Rails控制台中运行同一行时,不会发生相同的错误

这是在Rails4上。控制器的完整代码如下所示

class Admin::PackagesController < ApplicationController
  def index
    @packages = Package.all
  end

  def new
    @package = Package.new
  end

  def create
    @package = Package.new(package_params)
    if @package.save
      flash[:success] = "Package created."
      redirect_to admin_packages_path
    else
      flash.now[:warning] = "Something went wrong."
      render "new"
    end
  end

  def edit
    @package = Package.find(params[:id])
  end

  def update
    @package = Package.find(params[:id])
    if @package.update_attributes(package_params)
      flash[:success] = "Package updated."
      redirect_to admin_packages_path
    else
      flash.now[:warning] = "Something went wrong."
      render "new"
    end
  end

  def destroy
    @package = Package.find(params[:id])
    @package.destroy
    flash[:success] = "Package deleted."
    redirect_to admin_packages_path
  end    

  private
    def package_params
      params.require(:package).permit(:name, :price, :class, :description, :order)
    end
end
class Admin::PackagesController
我注意到您的“包参数”中似乎有一个名为class的属性。类对于Ruby/Rails中的属性来说是一个非常糟糕的名称。这可能就是问题所在。

我真不敢相信我错过了!谢谢迁移!