すぐにymlファイルで宣言された変数を使用したいと思います。たとえば、site_name
およびdescription
で使用したい。
en:
site_name: &site_name "Site Name"
static_pages:
company:
description: *site_name #this works fine
description: "#{*site_name} is an online system" #this doesn't work
どうすれば結合できますか*site_name
追加テキスト付きの変数?
簡単に言えば、YAMLで エイリアス を使用したい方法で文字列補間を行うことはできないと思います。
あなたの場合、私がすることは私のロケールファイルに次のようなものがあります:
en:
site_name: "Site Name"
static_pages:
company:
description: ! '%{site_name} is an online system'
次に、サイト名をパラメータとして適切なビューを呼び出します。
t('.description', site_name: t('site_name'))
"Site Name is an online system"
。
ただし、YAMLファイルでエイリアスを使用して文字列を連結するのに必死である場合、次の完全に非推奨コードも文字列を配列の2つの要素:
en:
site_name: &site_name "Site Name"
static_pages:
company:
description:
- *site_name
- "is an online system"
そして、次のように適切なビューで配列をjoin
します。
t('.description').join(" ")
どちらでも"Site Name is an online system"
。
ただし、@ felipeclopesがリンクしている質問とは別に、この道を進むことに決める前に、以下を確認してください。
例のように、次の構文を使用できます。
dictionary:
email: &email Email
name: &name Name
password: &password Password
confirmation: &confirmation Confirmation
activerecord:
attributes:
user:
email: *email
name: *name
password: *password
password_confirmation: *confirmation
models:
user: User
users:
fields:
email: *email
name: *name
password: *password
confirmation: *confirmation
sessions:
new:
email: *email
password: *password
この例は、 dictionaries を使用したRuby i18n YAMLファイルのRailsのリファクタリングから取得されました。