2011-06-04 65 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,了解如何使用此功能(如果您需要更复杂的功能)。