如何在RESTful URL中使用slugs?

问题描述:

current best practices用于在留言板上给定线程REST风格的URL看起来应该是这样的:如何在RESTful URL中使用slugs?

http://domain/forum/threads/3 

这也是一个常见的搜索引擎优化的做法,网址必须包含关键字(塞),所以也许上面的网址有可能成为:

http://domain/forum/threads/3/title-of-this-particular-thread 

现在,编辑这个主题,再次,根据我挂在第一段的指引,网址是:

http://domain/forum/threads/3/edit 

当某人启动一个标题为“edit”的线程时会发生什么?如何确定是否显示或编辑该线程?

而不是http://domain/forum/threads/3/title-of-this-particular-thread

你应该做http://domain/forum/threads/3-title-of-this-particular-thread

这将防止冲突,只是作为搜索引擎友好。有几个方法可以做到这一点,但最简单的就是在模型中自动执行转换添加to_param方法:

class Thread < ActiveRecord::Base 
    to_param 
    "#{id}-#{title}" 
    end 
end 

如果你需要比这更多的灵活性,或者不想重蹈覆辙在所有型号中,您可以使用friendly_id宝石。

+0

*上的URL请求不同 – babonk