目前我所拥有的是
http://www.example.com/_id
而不是在网址中显示生成的id
,而不想在url
中显示帖子的标题。如
http://www.example.com/this_is_a_new_post
我必须在集合中添加slug
字段吗?是不是有任何解决方案,我可以使用它可以建立一个友好的网址,我不必像slug
那样创建另一个冗余字段?
P.S。我不想使用包。我想这可以在没有包装的情况下完成。
答案 0 :(得分:0)
您可以做的最简单的事情就是使用/:title
。 Iron会自动解码标题。 Firefox很好地处理这些URL。它只是转换它们,因此用户可以看到包括所有特殊字符在内的实际标题。此外,所有铁助手都正确编码URL字符串。
要创建一个slug,你可以使用类似这样的函数:
createURLSlug = function (url) {
var slugRegex = /[^\w\-\.\~]/g
while(slugRegex.test(url)) {
url = url.replace(slugRegex, '-')
}
return url
}
我使用wiki page on of allowed URL characters作为此正则表达式的参考。
如果您使用SimpleSchema
,还可以使用autoValue:
...
slug: {
type: String,
autoValue: function () {
return createURLSlug(this.field('title').value)
}
}
...