2013-04-24 29 views
3

我能redirect所有(無效)網址中使用this line at the end of the routes file重定向和提高閃點消息時捕獲所有的路線

match '*a' => redirect('/') 

我想要做的重定向,並通過在routes.rb警報消息。
喜歡的東西(語法錯在這裏):

match '*a' => redirect('/'), :alert => "aaargh, you don't want to go to #{params[:a]}" 

是否有可能做到這一點?

如果我在觀看/控制器這樣做,我可以使用redirect_to和快閃消息傳遞重定向頁面上(見redirecting in the docs例子)。創建一個新的控制器方法並在那裏重定向會起作用,但它看起來很不雅...是推薦的方式嗎?

回答

3

Jun's answer有輕微的調整讓我做到這一點:

match '*a' => redirect { |p, req| req.flash[:error] = "aaargh, you don't want to go to #{p[:a]}"; '/' } 

與所需的(動態沿着重定向無效的頁面'/' ) 信息。

如果你去www.your_website/a_bad_place這傳遞'/'消息:

aaargh,你不想去a_bad_place

您可以通過抓取整個違規(無效)網址:

#{req.env["HTTP_HOST"]}#{req.env["REQUEST_PATH"]} 

以及與此顯示出來:

match '*a' => redirect { |p, req| req.flash[:error] = "aaargh, you don't want to go to #{req.env["HTTP_HOST"]}#{req.env["REQUEST_PATH"]}"; '/' } 

,你會看到:

aaargh ,你不想去www.yourwebsite/a_bad_place

+0

很酷的解決方案... – Nich 2013-04-25 11:37:52

1

我能做的最好的是:

match 'PATH' => redirect { |p, req| req.flash[:alert] = "MESSAGE"; '/' } 
+0

謝謝!我能夠做一些微小的修改,這讓我朝着正確的方向:) – 2013-04-25 10:42:15