Неопределенная ошибка маршрута (Rails)
Я вижу следующую ошибку:
Error message: undefined local variable or method `call_alert_path' for #<RoadrunnerTwilioAlert:0x007f34401bbd10>
Тем не менее, я чувствую, что call_alert_path
правильно определен в маршрутах. Это подтверждается тем фактом, что мои тесты пройдены. Основное различие между тестовым режимом и производством состоит в том, что в производстве метод, который вызывает call_alert_path
в асинхронной работе. Возможно, это сбрасывает... в любом случае, я просто хочу подтвердить сообществу, что 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"
1 ответ
Помощники 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