2012-04-11 60 views
1

routes.rb我已經建立了路由 - 爲什麼永久鏈接「john.green」不起作用?

匹配 「成員/:永久」=> 「賬戶#簡介」

當用戶的URL名稱爲john-greenjohn_greenjohngreen,一切正常,但是當url的名字是john.green,那麼固定鏈接只取第一部分 - john 具體來說,從Rails調試窗口:

Request 

Parameters: 

{"permalink"=>"john", 
"format"=>"green"} 

爲什麼不接受.(dot)的永久鏈接?存在使用該功能的任何功能? 編輯當我使用

match "member/:permalink" => "accounts#profile", 
     :requirements  => { :permalink => /.+/ } 

我得到

{"requirements"=>{"permalink"=>/.+/}, 
"permalink"=>"john", 
"format"=>"green"} 

回答

1

默認情況下軌點作爲格式後對待一切,看起來像有重寫此行爲沒有簡單的方法。但是,有一個使用:requirements選項有點髒解決辦法:

match 'member/:permalink' => 'accounts#profile', 
     :constraints  => { :permalink => /.+/ } 

通過增加貪婪正則表達式爲:permalink參數你讓Rails的它傳遞member/子路徑進入params[:permalink]後耳目一新。

+0

感謝您的回覆,但不幸的是,url名稱仍然分爲兩部分(我更新了我原來的帖子) – user984621 2012-04-11 21:21:33

+0

對不起,我的錯誤。它應該是「約束」,而不是「要求」。更新並測試了答案 - 在Rails 3.2.3上對我很好。 – 2012-04-12 05:52:01

+0

太棒了,它的工作!謝謝。 – user984621 2012-04-12 09:13:38