语言rails的动态路径

时间:2013-06-30 18:53:42

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

我有这些路线:

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 '('

谢谢!

1 个答案:

答案 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) %>