Параметры маршрута требуют передачи аргументов в действие - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть следующий код в моем файле rout.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)):

Здесь - полный стеки для справки.

А путы webhook_source просто возвращают process.

Я не уверен, как избавиться от аргумента, который я считаю излишним.

1 Ответ

0 голосов
/ 10 ноября 2019

Это происходит из-за синтаксической ошибки, поскольку методы в классе, которые наследуют 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 . Определение метода с другим именем, которое не является ключевым словом, решило бы проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...