我有一个名为Package的模型,此代码位于Admin :: PackagesController。
def new
@package = Package.new
end
这会抛出NoMethodError,并带有消息" undefined method` []'对于nil:NilClass",突出显示定义@package的行。
当我为变量使用其他名称时,或者在Rails控制台中运行相同的行时,不会发生同样的错误。
这是在Rails 4上。控制器的整个代码如下。
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
答案 0 :(得分:2)
我注意到你的&#34; package_params&#34;你好像有一个叫做class的属性。对于Ruby / Rails中的属性,类是一个非常糟糕的名称。这可能是问题所在。