Ruby on rails Rails控制器参数未定义
我正在尝试在Rails上创建一个简单的api。(v4.1.8) 然而,我发送的参数似乎从未到达控制器。 我总是得到:Ruby on rails Rails控制器参数未定义,ruby-on-rails,Ruby On Rails,我正在尝试在Rails上创建一个简单的api。(v4.1.8) 然而,我发送的参数似乎从未到达控制器。 我总是得到: undefined method `parameters' for nil:NilClass 控制器代码为: class API::V1::ServiceController < ApiBaseController def initialize puts 'OK. I am here.' # <---- I can get here without er
undefined method `parameters' for nil:NilClass
控制器代码为:
class API::V1::ServiceController < ApiBaseController
def initialize
puts 'OK. I am here.' # <---- I can get here without error.
puts params.inspect # <---- Here is where the error occur.
render json: {message: 'Test completed.'}
end
end
我的测试URL:
http://localhost:3000/api/v1/initialize?param1=one
此错误是由于将
initialize
用作操作名称所致。在Ruby中,initialize
是一个关键字,表示类构造函数。在这种情况下,在初始化控制器类之前调用params,因此会出现错误
有关
initialize
关键字的详细信息,请参阅。此错误是由于将initialize
用作操作名称所致。在Ruby中,initialize
是一个关键字,表示类构造函数。在这种情况下,在初始化控制器类之前调用params,因此会出现错误
有关
initialize
关键字和此项的更多信息,请参阅。哪一行抛出此错误?在nil
对象上调用方法时会引发此类错误。在本例中,在某个点上,您正在执行@some\u object.parameters
,但是当我尝试访问“params”时,@some\u object
是nil
,正如您在控制器代码中看到的那样,我在那里放置了一个标记。我认为问题在于方法名initialize
。在ruby中,initialize方法表示构造函数。尝试重命名该方法。@Santhosh是的,我认为这就是原因。我改为初始化系统,错误消失了。也许你可以回答,我会把它标记为答案。是否有指向所有保留方法名称的引用链接?很高兴它起作用了。我在答案中添加了2个参考链接。哪一行会抛出此错误?在nil
对象上调用方法时会引发此类错误。在本例中,在某个点上,您正在执行@some\u object.parameters
,但是当我尝试访问“params”时,@some\u object
是nil
,正如您在控制器代码中看到的那样,我在那里放置了一个标记。我认为问题在于方法名initialize
。在ruby中,initialize方法表示构造函数。尝试重命名该方法。@Santhosh是的,我认为这就是原因。我改为初始化系统,错误消失了。也许你可以回答,我会把它标记为答案。是否有指向所有保留方法名称的引用链接?很高兴它起作用了。我在答案中添加了2个参考链接。
namespace :api , :defaults => {:format => :json} do
namespace :v1 do
get 'initialize', to: 'service#initialize'
end
end
http://localhost:3000/api/v1/initialize?param1=one