爲了澄清,這裏的情況:Rails靜態頁面路由 - 有沒有更好的方法?
我構建了一個非常簡單的CMS,將成爲我計劃在未來創建的幾個應用程序的基礎。我真的很希望能夠創建一個名爲「About」(大部分是靜態的)的頁面,並自動地以「/ about」的方式訪問它,而不必修改routes.rb。
我現在有這樣一個通配符路線,工作得很好:
match '/*slug', :to => 'pages#dynamic_page',
:constraints => { :fullpath => /.+\.html/ }
的問題是,我真的希望能夠省略名「.html」結尾。但是,我更喜歡通過諸如「/ pages/about」之類的網址進行擴展。有沒有更好的方法來處理這個問題?我刪除約束時發生的問題是,對不存在的項目的請求會通過Rails路由器,這顯然不太理想,因爲這是需要處理的額外開銷。
有沒有更好的方法?如果被請求的頁面是一個靜態頁面,有沒有辦法完全避免路由器,所以我可以消除通配符路由?
謝謝!
謝謝 - 與具有格式可選,但問題是,瀏覽器則開始向/favicon.ico發出請求,並且這些請求會通過我的PagesController中的dynamic_page方法。所述方法中發生的第一件事是數據庫命中,看看是否有任何匹配的網頁帶有'favicon'或'favicon.ico'的url slug - 我真的想避免命中數據庫。這就是爲什麼我現在有那裏的.html約束。 – codykrieger 2010-11-04 21:39:36
你有一個靜態的favicon.ico文件嗎?不幸的是,瀏覽器需要一個,我不想構建一個瘋狂的複雜解決方案,只是爲了解決這個問題,所以我只是在我的公共目錄中放置一個空白的favicon文件並將其稱爲完成。你甚至可以把它變成一個空的文本文件 - 瀏覽器會窒息它,但它也會扼殺你的應用程序中的500錯誤,這樣就沒有數據庫命中。 – 2010-11-04 22:12:44
我不這樣做,但我想如果需要的話我可以。我主要關心的是,每次出現404或路由錯誤時,它都會不必要地通過該路由。 – codykrieger 2010-11-05 01:16:33