Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 NameController中的命名错误#新_Ruby On Rails 3_Controller_Nomethoderror - Fatal编程技术网

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