我在一个非控制器类中有这个函数
def self.request(req_num, time)
token = XsrfToken.last['token']
db_parser = FetchDbParser.new
used_url = ENUM_URLS[req_num]
p token
conn = Faraday.new(
url: "#{BASE}#{used_url}",
headers: { 'Content-Type' => 'application/json', 'XSRF-TOKEN' => token }
)
response = conn.post do |req|
req.body = { stationCodes: params[:id], collectTime: time }.to_json
end
res = JSON.parse(response.body)
return unless res['success']
parser_caller(req_num, res, db_parser)
end
我需要在这里得到一个参数req.body = { stationCodes: params[:id], collectTime: time }.to_json
,但它是undefined
我还尝试在ApplicationController类中创建一个方法,该方法应该从非控制器类调用并返回此参数,但我得到了另一个错误
`params': undefined method `filtered_parameters' for nil:NilClass (NoMethodError)
1条答案
按热度按时间x6yk4ghg1#
params
是一个控制器概念,并且仅在控制器动作的上下文中可用。当你需要另一个对象中的
params
的值时,你需要显式地传递params
或至少是你需要的值给这个对象。例如,当您的控制器看起来像这样时
如果你需要
self.request
方法中的params[:id]
的值,那么你需要像这样改变控制器方法你的
self.request
像这样