0

所以在我们的 Rails 4.2 应用程序中,有一个 alchemy_cms gem,它要求它的路由最后安装在 config/routes.rb 中。

SampleApp::Application.routes.draw do
  #other routes for the rails app here
  # :
  # :
  mount Alchemy::Engine => '/'
end

我们得到像“/somehacker/routingurl”这样的路由,然后由 Alchemy::Engine 处理,导致默认的 500 错误。如果我想做一个自定义 404 错误,那么正确的方法是构建一个自定义 404 页面并让 Alchemy 处理重定向?否则,由于 Alchemy 文档指定它必须是 config/routes.rb 中的最后一条路由,因此无法添加一条包罗万象的路由以重定向到我假设的某种错误页面。

编辑:

问题之一是有一些类似于上面无效的“somehacker”路由的路由确实需要由 Alchemy 路由引擎解析,例如“/en/us”,其中“en”是有效的语言环境。这就是我最初想将路由处理放在 Alchemy 引擎的路由文件中的原因。

4

1 回答 1

0

如果您难以配置和使用 Alchemy cms gem 将未知路由重定向到自定义页面,您可以使用下面的方法通过下面给出的小编码调整来实现相同的功能:

导轨 4.XXX

1. 第一种方法。

路线.rb

您仍然可以使用 simpleget重定向所有未知路由。

  get '*path', to: 'home#index'

如果您希望为 POST 和 GET 请求提供路由,您仍然可以使用 match,但 Rails 希望您通过via.

  match "*path" => "home#index", via: [:get, :post]  

请记住,它routes.rb是按顺序执行的(匹配符合所提供路径结构的第一个路由),因此将通配符捕获放在匹配的底部。

在这里,您可以将 home#index 替换为您在应用程序中定义的任何自定义路径,还请注意,仅将此重定向代码保留在 routes.rb 的底部很重要。

2.您可以按照下面的教程对同一个问题从不同的角度来解决可以找到。

使用 Rails 4 自定义 404 错误页面

于 2015-12-17T12:32:42.360 回答