1

我正在尝试捕获 UTF-8 URL。通常,使用约束效果很好。对于 URL:/international-delight-iced-coffee/路由有效:

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永远不会被调用。知道如何使约束捕获吗?

4

2 回答 2

0

您是否需要想要匹配的控制器/动作(下面带有to参数)。

我有这样的事情:

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

我的RoutingConstraint#matches?方法受到了打击。

我用你的 UTF-8 url 试过这个,它似乎工作正常。

于 2013-02-12T20:03:41.723 回答
0

您的.matches?方法是一个类方法,但您Post.new作为约束传递。要么替换Post.newPost,要么self.从方法定义中删除。

于 2014-07-25T09:07:28.913 回答