Ruby on rails 使用@package作为变量名时出现NoMethodError
我有一个名为Package的模型,该代码位于Admin::PackagesController中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
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中的属性来说是一个非常糟糕的名称。这可能就是问题所在。我真不敢相信我错过了!谢谢迁移!