如何在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宝石。
*上的URL请求不同 – babonk