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

时间:2019-11-10 14:07:42

标签: ruby-on-rails actioncontroller

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

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

1 个答案:

答案 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

更新

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