1

私はこれらのルートを持っています:

job_de_path GET  /de/jobs/:id(.:format)  jobs#show {:locale=>"de"}
job_en_path GET  /en/jobs/:id(.:format)  jobs#show {:locale=>"en"}

各ジョブ オブジェクトには、またはの値localeを持つ属性があります。"en""es"

各ジョブのロケール属性に応じて、次のような動的パスを生成したいと思います。

<%= link_to, "job 1", job_"#{job.locale}"_path(job) %>

しかし、構文エラーが発生します。

syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('

ありがとう!

4

1 に答える 1

2

標準の「名前でメソッドを呼び出す必要がありますが、名前は文字列です」トリックを使用できます。

<%= link_to, "job 1", send("job_#{job.locale}_path", job) %>

以上 (IMO)、スコープを使用してルートを設定します。

scope '(:locale)' do
  # Locale-less routes go here...
end

job_path次に、ロケールを引数として取る単純なヘルパーを作成します。

<%= link_to 'job 1', job_path(job.locale, job) %>
于 2013-06-30T19:18:33.617 に答える