2013-05-20 25 views
0

我的應用程序緩存的網頁導軌和網址URL FriendlyId內

在網頁#新的,當你提交URL(不http://前綴)創建了一個頁面,你將被重定向到展會上,像pages/4其中4是ID

我想補充friendly_id但加入extend FriendlyIdfriendly_id :urlPage模型

後,我遇到了問題,如果我提供「yahoo.com」,重定向去頁/雅虎.COM。 yahoo.com被解釋爲{"id"=>"yahoo", "format"=>"com"}和導軌告訴我Couldn't find Page with id=yahoo

如果我提供「yahoo.com/index.html」,重定向去頁/ yahoo.com/index.html的,但當時我只是得到No route matches [GET] "/pages/yahoo.com/index.html"

你認爲我能解決這個問題嗎?

回答

0

軌道路線中的時段表示格式(.json,.html,.csv等)。爲了讓路線包含句點,您需要將路線上的format選項設置爲config/routes.rb文件中的false。

這個答案是從Disable :.format routes in rails3借來的。

match '*pages' => 'pages#show', :format => false 

或(機智):

constraints :format => // do 
    resources :pages 
end 

至於friendly_id,具有運行遷移到:slug列添加到Page模式?

對於您的示例,friendly_id採用:url列,使其成爲友好的URL,然後使用正確的:slug值更新您的Page實例。我懷疑這個friendly_id可能會取代有下劃線的時段,但我沒有驗證這一點。

如果你不想使用:slug列,您已經有了一個:url列,那麼你需要將它定義爲這樣的:

friendly_id :url, use: [:slugged], slug_column: :url 

...具體地說,slug_column說法。

+0

謝謝。 我在我的'Page'模型中覆蓋了'normalize_friendly_id',所以它什麼都不做(因爲我想讓我的網址像'/ page/apple.com',而不是'/ page/apple-com' - 我' m使用路由的資源版本,但它似乎並沒有工作,我由於某種原因再次出現'GET'錯誤 –