我遇到了一個小問題...我設置了一個服務於德國網站的rails應用程序。爲了利用Rails的內部多元化功能,我將所有模型保留爲英文(例如模型「JobDescription
」)。 現在,如果我打電話「http://mysite.com/job_descriptions/
」,我得到我所有的job_descriptions
....迄今爲止,這麼好。因爲我不想在我的網址英文術語「job_descriptions
」,我把下列我的routes.rb在rails中重命名路由(地圖,link_to,to_param)
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更加適合搜索引擎優化,我想在URL中更換用戶友好的插件。因此,我把我的job_description.rb
如下:
def to_param
"#{id}-#{name.gsub(/[^a-z0-9]+/i, '-')}"
end
其中,每當我在任何link_to
方法使用「job_description_path
」,使我的網址出類似「http://mysite/job_descriptions/13-my-job-description-title」。
但是,這是我卡住的地方,我想得到「http://mysite/german_term/13-my-job-description-title
」。我已經嘗試在link_to代碼中將「job_description_path
」與「german_term_path
」進行交換,但僅生成「http://mysite/german_term/13
」。顯然,to_param
未被調用。 一個解決辦法,我發現是建立與鏈接:
<%= link_to job_description.name, german_term_path(job_description.to_param) %>
但是,這是相當繁瑣改變這一切在我的代碼link_to
電話。我想要的是當它出現在URL中時,用「german_term
」代替「job_description
」。
有什麼想法?!?
問候,
塞巴斯蒂安
真棒邁克!這正是我所期待的!不知道爲什麼我沒有在「地圖」中找到它 - 文檔... – Sebastian 2009-01-29 16:50:17