我有这些路线:
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"
个值的属性。
我想生成一个动态路径,具体取决于每个作业的locale属性,如:
<%= link_to, "job 1", job_"#{job.locale}"_path(job) %>
但是我遇到了语法错误。
syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('
谢谢!
答案 0 :(得分: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) %>