路由参数要求将参数传递给操作

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

我不确定如何摆脱我认为是多余的论点。

nb_sky 回答:路由参数要求将参数传递给操作

这是因为语法错误,因为继承ActionController的类中的方法不能拥有自己的方法参数。您的process方法应该是

def process 
    puts "========="
    puts params[:webhook_source]
    puts "========="
    case params[:webhook_source]
    when 'razorpay'
      process_razorpay(params)
    end
    head :ok
 end

更新

问题出在方法的名称上。 processAbstractController#Base使用的关键字。用不同的名称(不是关键字)定义方法可以解决此问题。

本文链接:https://www.f2er.com/3128957.html

大家都在问