Украшение модели Ruby on Rails с помощью обратного вызова Draper внутри
Я использую Cable Ready и Draper Gem в своем проекте Rails. У меня возникли проблемы с оформлением внутри обратного вызова. Вот что у меня есть в обратном вызове модели:
after_save do
cable_ready[SplitsChannel].text_content(
selector: "#payment-amount",
text: payment.decorate.amount_f
).text_content(
selector: "#left-to-pay",
text: table_session.decorate.left_to_pay_f
).broadcast_to(split)
end
Когда обратный вызов выполняется, я получаю в журналах сервера:
ActiveSupport::Notifications::InstrumentationSubscriberError (Exception(s) occurred within instrumentation subscribers: NoMethodError, NoMethodError):
Это определениеamount_f
вPaymentDecorator
:
def amount_f
h.to_brl(amount)
end
left_to_pay_f
определяется аналогично. Это определениеto_brl
вApplicationHelper
:
def to_brl(centavos)
number_to_currency(centavos.to_f / 100, unit: "R$", separator: ",", delimiter: ".")
end
Бегpayment.decorate.amount_f
иtable_session.decorate.left_to_pay_f
наAppPayment
экземпляр работает как положено в рельсах c. Однако, когда обратный вызов выполняется, я получаю ошибку выше.
Использование неформатированногоpayment.amount
иtable_session.left_to_pay
значения в операциях готовности кабеля также работают, но задают для внутреннего текста целевых элементов DOM неформатированные значения. Следовательно, проблема, похоже, связана с украшением связанных записей внутри обратного вызова.