目前我有什么是添加URL友好蛞蝓
http://www.example.com/_id
而不是我想我的帖子显示在url
标题的URL显示产生id
。如
http://www.example.com/this_is_a_new_post
我一定要添加slug
场集合中的呢?是不是有任何解决方案,我可以使一个友好的网址,我不必使另一个多余的领域,如slug
?
P.S.我不想使用包。我想这可以在没有包装的情况下轻松完成。
目前我有什么是添加URL友好蛞蝓
http://www.example.com/_id
而不是我想我的帖子显示在url
标题的URL显示产生id
。如
http://www.example.com/this_is_a_new_post
我一定要添加slug
场集合中的呢?是不是有任何解决方案,我可以使一个友好的网址,我不必使另一个多余的领域,如slug
?
P.S.我不想使用包。我想这可以在没有包装的情况下轻松完成。
你可以做的最简单的事情就是使用/:title
。铁会自动解码标题。 Firefox很好地处理这样的URL。它只是转换它们,所以用户会看到包含所有特殊字符的实际标题。而且,所有的铁帮助者都正确地编码了URL字符串。
要创建可以使用这样的功能的毛坯:
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)
}
}
...
为了这个,我需要建立一个'slug'场收藏权?这不是多余的吗?并在路由器而不是'/:slug'我需要返回'/:title'? – syed
是的,我会为它创建一个单独的字段,是的它会是多余的。但是你也可以调用大多数缓存中的信息。使用'slug'字段作为*高速缓存*将使您在每次调用路由时都可以运行该函数。你将需要使用'/:slug'作为路径的路径。 – Kriegslustig
我在使用此解决方案时出现错误。我正在使用简单的模式和autoform。我在尝试提交表单时遇到此错误。不过我尝试在autoform中使用'hooks',但无济于事。由于autoValues并未添加默认情况下autoform我使用[清理autovalue](https://github.com/aldeed/meteor-autoform#normal)从文档。 – syed
您使用的是铁:路由器 – Kriegslustig
是我使用的路由 – syed