Рассмотрим этот пример. У меня есть модель продукта, в которой есть discount_percentage
. И мы поддерживаем несколько локалей. В представлении мы не хотим, чтобы элементы i18n портили представление. Поэтому мы делаем помощника для лучшего чтения и, возможно, повторно используем его в других представлениях: render_product_discount
(код см. ниже), который будет отображать статус скидки для этого продукта. И мы используем функцию ленивого поиска i18n во всем приложении. Но когда мы хотим протестировать этот вспомогательный метод, мы получаем ошибку:
# RuntimeError:
# Cannot use t(".product_discount") shortcut because path is not available
потому что для помощника перевода нет path
, чтобы расширить ключ ленивого перевода.
Ожидаемый результат: Этот продукт имеет скидку 20%.
Имя помощника: render_product_discount
def render_product_discount
t('.product_discount', discount_percentage: product.discount_percentage)
end
# es.yml
es:
products:
show:
product_discount: Este producto tiene un %{discount_percentage} descuento.
# en.yml
en:
products:
show:
product_discount: This product has %{discount_percentage} discount.
Как обойти это? Заранее спасибо.