Ruby on rails 3 NameController中的命名错误#新
为了解释上下文,我在应用程序中遇到了一个错误:一个用户有几辆车,每辆车都可以加油,因此我的加油日志控制器如下Ruby on rails 3 NameController中的命名错误#新,ruby-on-rails-3,controller,nomethoderror,Ruby On Rails 3,Controller,Nomethoderror,为了解释上下文,我在应用程序中遇到了一个错误:一个用户有几辆车,每辆车都可以加油,因此我的加油日志控制器如下 class TankingLogsController < ApplicationController def new @user = User.find(params[:user_id]) @car = @user.cars.find(params[:car_id]) @tankinglog = @cars.tankin
class TankingLogsController < ApplicationController
def new
@user = User.find(params[:user_id])
@car = @user.cars.find(params[:car_id])
@tankinglog = @cars.tanking_logs.build
end
end
我遇到了以下错误:
NoMethodError in TankingLogsController#new
undefined method `tanking_logs' for nil:NilClass
Application Trace | Framework Trace | Full Trace
app/controllers/tanking_logs_controller.rb:5:in `new'
为什么我的应用程序会失败?您有一个非常明显的错误,Ruby会准确地告诉您它是什么以及在哪里可以找到它 你写过:
@car = @user.cars.find(params[:car_id])
@tankinglog = @cars.tanking_logs.build
在第一行初始化名为@cars
的变量,在第二行引用第二个未初始化变量@cars
您从未初始化过@cars
变量,因此它为零。调用@cars.tanking_日志
会导致未定义nil:NilClass的方法“tanking_日志”
,因为您正在有效地编写nil.tanking_日志
第二行应该使用@car.tanking\u日志
@car = @user.cars.find(params[:car_id])
@tankinglog = @cars.tanking_logs.build