目前我有什麼是添加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