2013-05-21 27 views
0

使用'/'作爲分隔符匹配路線看起來很容易,但我想用連字符匹配。唯一的問題是,有可能是在動態文本連字符我想要的ID出庭:如何根據以ID結尾的URL匹配rails路線?

格式:http://www.cities.com/ - 例子:http://www.cities.com/los-angeles-california-123

匹配「/:說明 - :ID」 =>「城市#show'不起作用,因爲:描述文本可以確定ID。

有沒有什麼辦法讓我匹配這種格式?我之前在.NET中使用Regex完成了這一工作,但是作爲Ruby Dev開始熱愛我的新生活。

謝謝!

回答

0

我會避免使用這個路由:只需傳遞param:id並將其分割到控制器中。 例如 City.find param[:id].split('-').last

更重要的是確保你能夠通過在模型覆蓋to_param產生正確ulrs:

def to_param 
    "#{self.name.split(' ').join('-')}-#{self.id}" # FIXME need extra sanity checks 
end 

最後一招,除非你確實需要的ID作爲最後ARG,你最好把它放在一開始,例如123-los-angeles,這種方式你不需要「解析」你的控制器中的ID,Model.find '123-los-angeles'開箱即用。

乾杯,