Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带约束的铁路线路_Ruby On Rails_Routes - Fatal编程技术网

Ruby on rails 带约束的铁路线路

Ruby on rails 带约束的铁路线路,ruby-on-rails,routes,Ruby On Rails,Routes,我正在尝试捕获UTF-8URL。通常,使用约束可以很好地工作。对于URL:/international delight冰咖啡/,路线如下: match ":post_name", :constraints => { :post_name => /.+/}} 这里一切都好。当我需要使用高级约束时失败: match ":post_name", :constraints => Post.new # inside Post.rb self.m

我正在尝试捕获UTF-8URL。通常,使用约束可以很好地工作。对于URL:
/international delight冰咖啡/
,路线如下:

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

您是否需要控制器/动作来匹配(下面使用
to
参数)

我有这样的想法:

match "/:vanity", to: 'vanity#routing', constraints: RoutingConstraint.new
我的
RoutingConstraint#matches?
方法被击中


我用您的UTF-8 url尝试了这个方法,它似乎工作得很好。

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