2015-12-17 43 views
0

因此,在我們的Rails 4.2應用程序中,有一個alchemy_cms gem,它需要將其路由最後安裝在config/routes.rb中。如何在鍊金術cms gem中處理Rails 4中的路由錯誤?

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

我們得到「/ somehacker/routingurl」,然後掉下來的鍊金術::引擎來處理,導致默認的500錯誤路線。如果我想做一個自定義的404錯誤,那麼正確的方法是建立一個自定義的404頁面,並讓Alchemy處理重定向?否則,因爲鍊金術文檔指定它必須是config/routes.rb中的最後一個路徑,所以不會有辦法添加一個catchall路徑來重定向到我假設的某種錯誤頁面。

編輯:

其中的一個問題是,有一些路線是一樣的無效「somehacker」上面這條路線也需要由鍊金術路由引擎解析,如「/ EN/US」其中「en」是有效的語言環境。這就是爲什麼我最初想把路由處理放在Alchemy引擎的路由文件中。

+1

看看這一個想法:http://stackoverflow.com/questions/4132039/rails-redirect-all-unknown-routes-to-root-url –

回答

0

如果你難以配置和使用鍊金術CMS寶石未知路線重定向到一個自定義的頁面,您可以用波紋管的方法來實現與波紋管給小編碼的調整相同:

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依次執行(匹配適合的供給路徑結構的第一路徑),所以把通配符捕捉在您的匹配數的底部。

在這裏,您可以使用您在應用程序中定義的任何自定義路徑替換主頁#索引,同時請注意,僅在routes.rb的底部保留此重定向代碼非常重要。

2.你可以按照下面的教程在相同的問題上以不同的角度解決可以找到。

Custom 404 error page with Rails 4

+0

謝謝...一件事 - 因爲Alchemy CMS可以讓你用自己的路線創建自定義的CMS頁面,我想我需要讓routes.rb在做一個通配符路由來重定向所有未知路由之前先使用掛載的Alchemy Engine路由......或者我不理解你的回覆? – Nona

+0

@Nona:其實我以前沒有使用鍊金術引擎的經驗,但是你需要的是將所有未知/未定義的路線重定向到你自己選擇的自定義頁面的權利?爲了達到這個目的,有一些可選的和相當簡單的方法來實現這個目標,所以我在回答中給出了兩種方法,你可能也可能不會遵循它們。 :) –