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 回答