2012-06-14 132 views
1

我試圖抓住UTF-8的URL。通常情況下,使用約束條件很好。對於網址:/international-delight-iced-coffee/路由的工作原理:有限制的Rails路由

match ":post_name", :constraints => { :post_name => /.+/}} 

一切都很好,在這裏。當它需要使用先進的約束條件時:

match ":post_name", :constraints => Post.new 

# inside Post.rb 
self.matches?(request) 
    puts ">>>> Arrived at matches!" 
    Post.find_by_name(request.path_parameters[:post_name]) 
end 

self.matches永遠不會被調用。任何想法如何使約束捕捉?

感謝先進! 賈斯汀

回答

0

你需要控制器/動作,你想匹配打(下面與to參數)。

我有這樣的事情:

match "/:vanity", to: 'vanity#routing', constraints: RoutingConstraint.new 

和我RoutingConstraint#matches?方法擊中。

我試過這與你的UTF-8網址,它似乎工作正常。

0

您的.matches?方法是一種類方法,但您傳遞的是Post.new作爲約束。請將Post.new替換爲Post,或從方法定義中刪除self.