Ruby on rails Rails路由按regexp匹配

Ruby on rails Rails路由按regexp匹配,ruby-on-rails,Ruby On Rails,我有一条规则: match '*path' => redirect("/some_scope/%{path}") 但是,只有当当前路径不是从/some\u scope/开始时,我才需要应用它 这两个人应该能够帮助你解决问题。如果你能给我们真正的代码,那就太好了,这样我就可以确定你到底想做什么,因为在这种情况下,你甚至不需要正则表达式 如果你想做我认为你想做的事。。。也就是说,将作用域应用于路径如果该路径尚未包含该作用域,则最好在应用程序控制器中进行筛选之前执行。即: before_fi

我有一条规则:

match '*path' => redirect("/some_scope/%{path}")
但是,只有当当前路径不是从
/some\u scope/
开始时,我才需要应用它

这两个人应该能够帮助你解决问题。如果你能给我们真正的代码,那就太好了,这样我就可以确定你到底想做什么,因为在这种情况下,你甚至不需要正则表达式

如果你想做我认为你想做的事。。。也就是说,将作用域应用于路径如果该路径尚未包含该作用域,则最好在
应用程序控制器
中进行筛选之前执行
。即:

before_filter :check_locale

protected

def check_locale
  redirect_to "/some_scope#{request.path_info}" if not request.path_info =~ /^\/some_scope\//
end

这两个人应该能够帮助你解决问题。如果你能给我们真正的代码,那就太好了,这样我就可以确定你到底想做什么,因为在这种情况下,你甚至不需要正则表达式

如果你想做我认为你想做的事。。。也就是说,将作用域应用于路径如果该路径尚未包含该作用域,则最好在
应用程序控制器
中进行筛选之前执行
。即:

before_filter :check_locale

protected

def check_locale
  redirect_to "/some_scope#{request.path_info}" if not request.path_info =~ /^\/some_scope\//
end
以下是我的解决方案:

DEFAULT_PATH_SCOPE = "/my_scope"

default_scope_constraint = ->(request) do
  !request.path.starts_with?(DEFAULT_PATH_SCOPE)
end

constraints(default_scope_constraint) do
  match '*path' => redirect("#{DEFAULT_PATH_SCOPE}/%{path}")
end
以下是我的解决方案:

DEFAULT_PATH_SCOPE = "/my_scope"

default_scope_constraint = ->(request) do
  !request.path.starts_with?(DEFAULT_PATH_SCOPE)
end

constraints(default_scope_constraint) do
  match '*path' => redirect("#{DEFAULT_PATH_SCOPE}/%{path}")
end

您是否需要按照上面所示匹配以
path
结尾的所有内容,或者如果它还没有该作用域,您是否需要匹配每个路径并将
/some\u scope/
附加到它?例如,您的意思是执行
match'*'=>重定向(/some\u scope/%{which\u匹配})
>>你的意思是要进行匹配'*'=>重定向(“/some_scope/%{which_was_matched}”)是的,我的意思是,你需要像上面所示的那样匹配以
路径
结尾的所有内容,还是需要匹配每个路径并在其上附加
/some_scope/
,你的意思是做
match'*'=>重定向(/some_scope/%{which_was_matched})
>>你的意思是做match'*'=>重定向(/some_scope/%{which_was_matched})是的,我是这个意思