Re: [問題] 關於 Rails 的 route

看板Ruby作者 (godfat 真常)時間16年前 (2008/11/27 14:10), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/2 (看更多)
回一下文好了... 比較有誠意,順便賺 p 幣 XD ※ 引述《shelary (喵小咩)》之銘言: : 環境: : Rails 2.0.2 : 狀況: : rails 的網址結構是 http://domain/controller/action/id : 當我的 controller 是不存在時..會出現 Route Error 的錯誤 : 當我的 action 是不存在時..會出現 Unknown action 的錯誤 : 請問要如何攔截這2個錯誤? 我有點不太記得了,但是印象中 rails 在有 respond_to 和沒有的情況下, 處理效果不太一樣。好像是有 respond_to 就會吐 406 + blank page, 而沒有的話卻會顯示 500 (MissingTemplate) 我對這點非常不滿,覺得一致性低到很誇張的境界。 於是在 application controller 裡加上: rescue_responses.merge! 'ActionView::MissingTemplate' => :not_acceptable 讓 MissingTemplate 可以吐出 406, 而不是 500. 不然連接 http://hostname/controller/action/id.asdasd 後面那 . 什麼的亂打,都會吐出 500, 但我認為這只是網址錯誤而已。 而既然 respond_to 是會吐出 406, 那為什麼 missing template 不是 406? 另一方面,406 + blank page 也很好笑,為什麼 public/404.html 和 public/500.html 有效,而 public/406.html 又無效? 所以我也在 ActionController::MimeResponds::Responder 的 respond 底下, 加上這一段: if @order.include?(Mime::ALL) @responses[Mime::ALL].call else # BEGIN patch by godfat # @controller.send :head, :not_acceptable @controller.send :render_optional_error_file, :not_acceptable # END patch by godfat end 把 head 的空白頁改成輸出 public/406.html 的內容。 不過這是 2.1 時的事,其他版本是怎麼樣我就沒有追蹤了... 同理可證,如果 RouteError 不會顯示 404 的話, 可能就在 application controller 裡加上: rescue_responses.merge! '????::RouteError' => :not_found 之類的吧? : 因為使用者在操作時..如果出現這兩個錯誤..根本看不懂 : 我希望可以轉到某一個頁面去..在這個頁面用中文來對使用者說明 : 也就是類似 Apache 裡 httpd.conf 可以設定 : ErrorDocument 404 /missing.html : 把 404 的錯誤都導到 missing.html 這頁來 照理說 rails 的 404 都會顯示 public/404.html 才對 可以的話,就改那頁的內容即可。要動態的頁面的話, 當然也可以,只是我忘記了,要查查看 -- 「行け!Loki!」(rocky ロッキー) -Gurumin ぐるみん 王子? XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.121.85

11/27 15:37, , 1F
404.html就沒辦法加一些動態文字..只能純靜態
11/27 15:37, 1F

11/27 15:38, , 2F
剛發現..要在 production 模式下才會讀 404
11/27 15:38, 2F
文章代碼(AID): #19BZdRS1 (Ruby)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #19BZdRS1 (Ruby)