2011-06-04 66 views
1

我希望能夠在網站的根目錄中顯示帖子固定鏈接。因此,例如,帶有永久鏈接「hello-world」的帖子應該顯示爲「mysite.com/hello-world」,而不是「mysite.com/posts_controller/hello-world」。如何配置類似WordPress的永久鏈接?

我該如何去做這樣的事情?

回答

3

我相信你的帖子模型中已經有了「slug」字段。 如果您的帖子控制器具有進去,你只需要添加正確的路徑,例如:

match '/:slug' => "Posts#show" 

否則,如果沒有塞在你的模型,你可以使用Stringex plugin。這是一個簡單的方法來自動創建您的帖子slug。

class Post < ActiveRecord::Base 
    acts_as_url :title 
end 

這將創建一個從你的標題塞並將其保存到slug列。

在你可以找到正確的崗位像這樣的控制器:

def show 
    @post = Post.find_by_slug(params[:slug]) 
end 
+0

可以嚼這對我來說只是一點點嗎?請求以/ post-title /形式出現,然後將路由發送到'show'控制器,然後控制器應該知道如何處理它?只需在控制器中使用params [:whatever]? – 2011-06-04 21:03:26

1

在你的路線:

match '/:slug' => "Posts#show" 

然後在你的控制器,你可以這樣做:

Post.find_by_slug(params[:slug]) 

注意:您將需要生成該渣屑值,並將其存儲在Post模型。

另請參閱friendly_id,瞭解如何使用此功能(如果您需要更復雜的功能)。