我正在尝试在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 error.
puts params.inspect # <---- Here is where the error occur.
render json: {message: 'Test completed.'}
end
end
ApiBaseController一无所获:
class ApiBaseController < ActionController::Base
end
路线:
namespace :api , :defaults => {:format => :json} do
namespace :v1 do
get 'initialize', to: 'service#initialize'
end
end
我的测试网址:
http://localhost:3000/api/v1/initialize?param1=one
答案 0 :(得分:4)
此错误是由于使用initialize
作为操作名称。在Ruby中,initialize
是一个关键字,表示类构造函数。在这种情况下,在初始化控制器类之前调用params,因此错误。
有关initialize
关键字以及此this的详细信息,请参阅list of all ruby keywords。