Как правильно писать ?

#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