Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 params中没有与日语匹配的路由_Ruby On Rails_Ruby_Ruby On Rails 4_Routes_Constraints - Fatal编程技术网

Ruby on rails params中没有与日语匹配的路由

Ruby on rails params中没有与日语匹配的路由,ruby-on-rails,ruby,ruby-on-rails-4,routes,constraints,Ruby On Rails,Ruby,Ruby On Rails 4,Routes,Constraints,我想要一个像/posts/category1/category2/这样的URL,所以我在routes.rb中写了以下内容: 类别约束 def自我匹配?(请求) xparams=request.params[:k].split(“/”) xparams&Category.pluck(:name)==xparams 终止 终止 RailsApp::Application.routes.draw do 获取“/posts(/:k)”=>“posts#index”,约束:CategoryConstrai

我想要一个像
/posts/category1/category2/
这样的URL,所以我在
routes.rb
中写了以下内容:

类别约束
def自我匹配?(请求)
xparams=request.params[:k].split(“/”)
xparams&Category.pluck(:name)==xparams
终止
终止
RailsApp::Application.routes.draw do
获取“/posts(/:k)”=>“posts#index”,约束:CategoryConstraints
终止
它适用于罗马书类别名称,但当类别名称为日语时,例如当我访问
/posts时/新規開発/,a出现以下错误:

No route matches [GET] "/posts/%E6%96%B0%E8%A6%8F%E9%96%8B%E7%99%BA/

我认为这是因为日文字符被转换为Unicode,所以
route
不起作用。如果我改为
constraints:{k://.*/}
,一切正常,但我无法像第一种方法那样处理
constraints
中的逻辑(在不访问
CategoryConstraints
类的情况下,
routes
返回false)。请帮助我使用第一种方法的附加逻辑来实现这一点。

我猜是
类别。名称
不是以unicode格式存储的,因此它与
xparams
中的内容不匹配。您需要确保这两个值都是unicode,以便能够正确匹配它们

我认为类似的问题可能会解决您的问题:


事实上,这是一个带有params的过滤器,params是
类别的名称
,因此我必须检查所有的params是否都存在于
类别中。嗯……是否更快?当我使用像
/posts/category1/something\u不存在这样的链接时
我能提出
404
错误吗?你能再解释一下吗?我查过了。它们都是
Unicode
。问题是:请求在
类别约束
之外失败(如果我在
类别约束
内有
初始化
功能,
请求
==
),我无法进行任何检查或转换。当我使用这种方法时,如果我将约束更改为
{k://.*/}
,一切都会很好地工作。