因此,在我们的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中的最后一个路由,所以不会有一种方法来添加一个catchall路由来重定向到我认为的某种错误页面。
编辑:
其中一个问题是,有些路线就像无效的路线一样" somehacker"上面的路由确实需要由Alchemy路由引擎解析,例如" / en / us"在哪里" en"是一个有效的区域设置。这就是为什么我最初想把路线处理放在Alchemy引擎的路线文件中。
答案 0 :(得分:0)
如果你很难配置和使用Alchemy cms gem将未知路由重定向到自定义页面,你可以使用bellow方法实现相同的方法,并在下面给出一个小编码调整:
Rails 4.XXX
<强> 1。第一种方法。
(的的routes.rb 强>)
您仍然可以使用简单的get
重定向所有未知路由。
get '*path', to: 'home#index'
如果您希望为POST和GET请求提供路由,您仍然可以使用匹配,但Rails希望您通过via
指定请求方法。
match "*path" => "home#index", via: [:get, :post]
请记住,routes.rb
是按顺序执行的(匹配适合所提供路径结构的第一条路径),因此请在匹配项的底部放置通配符。
在这里,您可以将home #index替换为您在应用程序中定义的任何自定义路径,同时请注意,仅将此重定向代码保留在routes.rb的底部非常重要。 < / p>
<强> 2。您可以按照相同问题的波纹管教程,以不同的方式解决问题。