0

Я вижу следующее сообщение об ошибке:Неизвестная ошибка маршрута (Rails)

Error message: undefined local variable or method `call_alert_path' for #<RoadrunnerTwilioAlert:0x007f34401bbd10> 

Однако, я чувствую, как call_alert_path должным образом определены в маршрутах. Это подтверждается тем фактом, что мои тесты проходят. Основное различие между тестовым режимом & заключается в том, что в процессе производства метод, который вызывает call_alert_path, находится в async-задании. Возможно, это отбрасывает ... в любом случае, я просто хочу подтвердить сообществом, что call_alert_path в противном случае правильно определено, и нет ничего плохого в коде, как написано.

код контроллера:

# calls async job in production 
if Rails.env == "production" 
    RoadrunnerTwilioAlert.new.async.perform(params[:rentalrequest_id]) 
else 
    @alert = twilio_client.account.calls.create(
    from: ENV["Twilio_Verified_Phone"], 
    to: ENV["Roadrunner_Phone"], 
    url: call_alert_path, 
    method: 'post' 
) 
    @request.update_attributes(twilio_alert: "call") 
end 

Асинхронный код вакансии:

def perform(rentalrequest_id) 
    @request = Request.find(id) 
    @alert = twilio_client.account.calls.create(
    from: ENV["Twilio_Verified_Phone"], 
    to: ENV["Roadrunner_Phone"], 
    url: call_alert_path, 
    method: 'post' 
) 
    @request.update_attributes(twilio_alert: "call") 
end 

Маршрут:

match '/twilio/call_alert', to: 'twilio#call_alert', via: :post, as: "call_alert" 

ответ

2

URL хелперы не доступны в работника. Передайте URL-адрес в качестве аргумента для рабочего:

def perform(rentalrequest_id, url) 
    @request = Request.find(id) 
    @alert = twilio_client.account.calls.create(
    from: ENV["Twilio_Verified_Phone"], 
    to: ENV["Roadrunner_Phone"], 
    url: url, 
    method: 'post' 
) 
    @request.update_attributes(twilio_alert: "call") 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^