Ruby on rails 如果参数为大写,如何在rails routes中进行301重定向?

Ruby on rails 如果参数为大写,如何在rails routes中进行301重定向?,ruby-on-rails,seo,routes,http-status-code-301,actioncontroller,Ruby On Rails,Seo,Routes,Http Status Code 301,Actioncontroller,如何在routes.rb中执行301重定向,前提是如果某个参数是大写的thn重定向到小写的URL 我知道我可以使URL不区分大小写,但这不是我想要的 例如,如果用户点击此URL /公司/XYZ或/公司/XYZ 他应该被重新引导到 /公司/xyz 这是否可能与301重定向或我必须使用302重定向 谢谢我不知道如何在routes.rb中做到这一点,但我也不确定那是合适的地方。我会把它放到控制器的动作中。比如: class CompaniesController < ApplicationCon

如何在routes.rb中执行301重定向,前提是如果某个参数是大写的thn重定向到小写的URL

我知道我可以使URL不区分大小写,但这不是我想要的

例如,如果用户点击此URL /公司/XYZ或/公司/XYZ

他应该被重新引导到 /公司/xyz

这是否可能与301重定向或我必须使用302重定向


谢谢

我不知道如何在
routes.rb中做到这一点,但我也不确定那是合适的地方。我会把它放到控制器的动作中。比如:

class CompaniesController < ApplicationController

  def show
    company_id = params[:id]
    if company_id =~ /\A[[:upper:]]+\z/
      redirect_to company_path(company_id.downcase), status: :moved_permanently
    end
    # Handle normal process flow.
  end

end
class CompaniesController

如果您愿意,您可以在\u过滤器之前设置一个
并对访问单个记录的所有情况进行更一般的处理(
显示
编辑
更新
)。如果您想对所有型号都这样做,您甚至可以在ApplicationController中设置一个过滤器。

我没有regexps方面的技能,所以如果我有这样的url会怎么样:
/company/Xyz Xyz
,如果您想在id包含任何大写字母时重定向,您可以使用
/[:upper:]/
。在app controller中设置这样的前置过滤器是一种好的做法吗?