重命名的路线(图,link_to,to_param)在轨道
-
20-08-2019 - |
题
我有一个小问题...我设置一个轨道应用程序,是服务于一个德语网站。使用的轨道内部的复数形式特征的,我保留我所有的模型以英语(例如该模型"JobDescription
").现在,如果我呼叫"http://mysite.com/job_descriptions/
"我得到我的所有 job_descriptions
....到目前为止,一切都很好.因为我不想英文术语"job_descriptions
"在我的网址,我把以下进入我的路线。rb
map.german_term '/german_term', :controller => 'job_descriptions', :action => 'index'
map.german_term '/german_term/:id', :controller => 'job_descriptions', :action => 'show'
如果我呼叫"http://mysite.com/german_term/
"或者"http://mysite.com/german_term/283
"我得到我的所有 job_descriptions
, ,这是好的。
然而,要使URL更多的搜索引擎友好,我想要交换的标识更多的用户友好的塞在的网址。因此,我把以下我 job_description.rb
:
def to_param
"#{id}-#{name.gsub(/[^a-z0-9]+/i, '-')}"
end
其中,每当我使用"job_description_path
"在任何 link_to
方法,使我的网址出来的东西像"http://mysite/job_descriptions/13-my-job-description-title".
然而,这是我坚持,我喜欢"http://mysite/german_term/13-my-job-description-title
".我已经尝试过交换"job_description_path
"与"german_term_path
"在link_to代码,但是只有产生"http://mysite/german_term/13
".显然, to_param
不是叫。一个解决办法,我发现建立的链接:
<%= link_to job_description.name, german_term_path(job_description.to_param) %>
但是,这是相当繁琐的改变所有 link_to
电话在我的代码。什么我想要的是取代"job_description
"通过"german_term
"每当它发生在一个网址。
任何想法?!?
问候,
塞巴斯蒂安
解决方案
我想你会需要使用基于REST的路线佣工得到你想要的东西。
在这种情况下,它不会花费太多重新分解(假设你已经映射JobDescriptions作为一种资源)。留下你to_param的是,改变你的JobDescriptions路线类似如下:
map.resources :job_descriptions, :as => 'german_term'
希望这有助于!
其他提示
滑轨仅利用
def to_params
end
当你使用一个宁静的路线/链接URL帮手建设者。我所知道的唯一的办法是做类似你是如何做到的,除非你愿意只是取消你的英语链接和做这一切在德国。在这种情况下,刚刚摆脱命名路由线的,改变to_params使用正确的名称字段从数据库中。在这一点上,其余的路由应该表现正常。