#ruby-on-rails #yaml
#ruby-on-rails #yaml
Вопрос:
Обычно для добавления слова (для моего многоязычного веб-сайта) Я использую эту систему: <%= t('.title') %>
Сейчас в config/locales/en.yml
я добавил что-то вроде этого:
en:
home:
title: Title
title_0: Finally Sunday! Watch this title
title_1: Hey! It's monday! This is the Title
И я хочу использовать Time.now.wday и создать что-то вроде <%= t('.title_#{Time.now.wday}') %>
Но это не работает. Как это правильно написать?
Ответ №1:
Это потому, что вам нужны двойные кавычки для интерполяции строк в Ruby. Просто замените
<%= t('.title_#{Time.now.wday}') %>
для
<%= t(".title_#{Time.now.wday}") %>
хотя, возможно, это должно быть
<%= t("home.title_#{Time.now.wday}") %>
потому что title
, title_0
и title_1
вложены в home
Ответ №2:
Интерполяция не работает с одинарными кавычками, что означает, что:
puts "Works in double quoted strings: #{1 2}."
puts 'Not not work in single quoted strings: #{1 2}.'
распечатает:
"Works in double quoted strings: 3."
"Does not work in single quoted strings: #{1 2}."
source: http://ruby-for-beginners.rubymonstas.org/bonus/string_interpolation.html