2010-02-26 50 views
2
class Content < ActiveRecord::Base 
    has_friendly_id :title, :use_slug => true 
end 

我怎麼可以做一個像/ about-us而不是/ contents/about-us的鏈接?friendly_id/content_url沒有範圍

我應該修改content_url方法還是有更好的方法?

回答

0

好的,重新做這個答案。我已經研究了一下,包括has_friendly_id插件,看起來不錯,但之前沒有用過。我有點推出了自己的方法來創建友好的網址。

我想我現在明白你要求什麼......你的內容表中的每個標題,你想要一個友好的網址,並且你想要該網址在/ (root)而不是/content下開始。我沒有看到使用friendly_id做到這一點的直接方法,但那沒關係,routes.rb很容易做到這一點。

修改routes.rb中,使contentroot

map.root :controller => 'content' 

我想多map.root調用可以做,它只是取決於訂單,如果有衝突。如果沒有,這只是一個別名

map.connect '', :controller => 'content' 

祝你好運!

+0

我的意思是我有一個模型,標題爲「關於我們」 ,我不想每次將新模型添加到數據庫時都修改config/routes文件 – astropanic 2010-02-26 06:12:46

+0

我更多地解答了我的答案。如果您需要更多解釋,請告訴我。看起來你對路線的目的有些困惑,因爲你不斷提到一個模型。 「路徑」或「鏈接」實際上映射到控制器和操作。然後通過控制器中的命名操作方法訪問該模型。我不知道有什麼方法可以直接路由到模型。如果有辦法,它肯定不是軌道應該工作的方式。 – dpb 2010-02-26 16:17:21

+0

我知道軌道路由如何工作,並知道動作控制器mechanizm,但我想要像http://ministerstwogadzetow.com這樣的鏈接,例如,看看這兩個鏈接http://www.ministerstwogadzetow.com/wyciagarka-do- slodyczy.html - 這指向產品控制器顯示操作和這一個http://www.ministerstwogadzetow.com/zegary-i-zegarki.html指向類別控制器顯示操作(PHP引擎),你可以看到,有沒有/類別/東西或/產品/東西,這就是我想要的 – astropanic 2010-02-26 18:03:58

3

我剛剛爲我正在處理的網站完成了此操作。

它實際上是指定正確路線的問題。

當你的模式被稱爲內容,我想你已經映射的內容作爲這樣的資源(在你的routes.rb):

map.resources :content 

這將處理這樣的URL:

http://example.com/content/my-special-content-page

要處理像URL:

http://example.com/my-special-content-page

您只需將路由映射是這樣的:

map.content '/:id', :controller => 'content', :action => 'show' 

注:

路線從頂部工作底部,所以你需要把這個低於大多數事情。尤其是:

map.root :controller => "welcome" 

如果你把上面這個新的路線,你會擁有一個錯誤,因爲它會嘗試打電話與該Controller.show行動:零的ID。

你還需要確保隨時隨地可以生成你的意見,你的網址就需要這樣使用這條新航線:

= link_to "My Special Page", content_path(@content) 
+0

不完全是我想要的,但一個很好的解決方案。 如果我有兩個或更多型號,不僅可以使用內容,而且可以使用產品和照片,我應該怎麼做? – astropanic 2010-03-01 21:31:08