routes.rb文件中有以下代码-
post "/webhooks/process/:webhook_source", controller: :webhooks, action: :process
可以预期的是,它将通过webhook_source
作为操作中的参数。
这是动作-
def process(webhook_source)
puts "========="
puts webhook_source
puts "========="
case params[:webhook_source]
when 'razorpay'
process_razorpay(params)
end
head :ok
end
如果我没有参数webhook_source
,则会收到错误-
ArgumentError (wrong number of arguments (given 1, expected 0)):
Here也是完整的堆栈参考。
webhook_source
的看跌期权仅返回process
。
我不确定如何摆脱我认为是多余的论点。
答案 0 :(得分:0)
这是因为语法错误,因为继承ActionController的类中的方法不能拥有自己的方法参数。您的process
方法应该是
def process
puts "========="
puts params[:webhook_source]
puts "========="
case params[:webhook_source]
when 'razorpay'
process_razorpay(params)
end
head :ok
end
更新:
问题出在方法的名称上。 process
是AbstractController#Base使用的关键字。用不同的名称(不是关键字)定义方法可以解决此问题。