ruby-on-rails - 在 Rails 3 中没有尾部斜杠的情况下重定向到规范路由

标签 ruby-on-rails ruby-on-rails-3 redirect routing canonical-link

在 Rails 3 上,我试图从没有尾部斜杠的 URL 重定向到具有斜杠的规范 URL。

match "/test", :to => redirect("/test/")

但是,上面的路由匹配/test 和/test/导致重定向循环。

如何让它只匹配没有斜线的版本?

最佳答案

您可以在 Controller 级别强制重定向。

# File: app/controllers/application_controller.rb
class ApplicationController < ActionController::Base

  protected

  def force_trailing_slash
    redirect_to request.original_url + '/' unless request.original_url.match(/\/$/)
  end
end

# File: app/controllers/test_controller.rb
class TestController < ApplicationController

  before_filter :force_trailing_slash, only: 'test'  # The magic

  # GET /test/
  def test
    # ...
  end
end

关于ruby-on-rails - 在 Rails 3 中没有尾部斜杠的情况下重定向到规范路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8589869/

相关文章:

ruby-on-rails - 当我运行 heroku run rake db :migrate in production 时出现此错误

css - 为什么在安装 bootstrap 后我的 Rails Solidus 应用程序中会出现此错误?

ruby-on-rails - rails : How to increment an integer field of selected instances of a model?

ruby-on-rails-3 - Rails 3+ 将 XML 转换为哈希并删除 "root"元素

java - 重定向到同一 Controller 中的 POST 方法

java - Jersey - 使用 Get Not Put 重定向,导致重定向循环

string - htaccess 如果查询字符串变量存在则重定向

ruby-on-rails - 来自 URL 的 Ruby on Rails 和 JSON 解析器

ruby-on-rails - 从表中删除与数组中的数据匹配的记录?

ruby-on-rails - Activerecord Force Index 包括