如何使用alchemy cms gem处理Rails 4中的路由错误?

时间:2015-12-17 03:09:53

标签: ruby-on-rails alchemy-cms

因此,在我们的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引擎的路线文件中。

1 个答案:

答案 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。您可以按照相同问题的波纹管教程,以不同的方式解决问题。

Custom 404 error page with Rails 4