替换 iron 路由器上表示 space 的 %20
Replace the %20 that means a space on iron router
我正在尝试用另一个字符替换 url 上表示 space 的 %20,
Router.map(function () {
this.route('promos', {
path: '/:promo_name',
waitOn: function(){
return Meteor.subscribe("promo", this.params.promo_name);
},
data: function(){
return Promociones.findOne({'metadata.nombrePromo': this.params.promo_name});
}
});
});
这就是我生成动态路由的方式,我得到了这样的结果 http://padonde.mx/Pi%C3%B1a%20Colada%202x1 我想将 %20 替换为另一个字符 - 或 +, 这在 iron router 上可行吗?
我不知道有任何 Iron-Router 配置可以改变这一点,但您可以执行以下操作:
添加名为 Collection Helpers 的小包:
$ meteor add dburles:collection-helpers
然后在 Collection 中定义一个虚拟字段(例如:polished_promo_name):
Promociones.helpers({
polished_promo_name: function() {
return this.promo_name.replace(/ /g, "AnotherCharacter");
}
});
当然现在使用 polished_promo_name 而不是 promo_name 并将空格替换回:
Router.map(function () {
this.route('promos', {
path: '/:polished_promo_name',
waitOn: function(){
return Meteor.subscribe("promo", this.params.polished_promo_name.replace(/AnotherCharacter/g, " "));
},
data: function(){
return Promociones.findOne({'metadata.nombrePromo': this.params.polished_promo_name.replace(/AnotherCharacter/g, " ")});
}
});
});
这实际上是一个stander URL编码,它不是由浏览器设置的
铁路由器。
你可以做到,
你在哪里插入
'metadata.nombrePromo', add another field to the collection like
'metadata.nombrePromoReplace'
,然后执行此操作。
我猜你有类似
var nombrePromo = $('#idElementPromo').val();
,或 session
或您将值传递给元数据的任何内容
所以基于那个 var nombrePromo
做这个。
var nombrePromoReplace = nombrePromo.replace(/\s+/g, '');
现在改变路线。
Router.map(function () {
this.route('promos', {
path: '/:promo_name',
waitOn: function(){
return Meteor.subscribe("promo", this.params.promo_name);
},
data: function(){
return Promociones.findOne({'metadata.nombrePromoReplace': this.params.promo_name});
}
});
});
现在,当您导航到 /:promo_name 时,如果您添加了类似
的内容
i have blanks spaces
路线应该是
/ihaveblankspaces
应该可以。
我正在尝试用另一个字符替换 url 上表示 space 的 %20,
Router.map(function () {
this.route('promos', {
path: '/:promo_name',
waitOn: function(){
return Meteor.subscribe("promo", this.params.promo_name);
},
data: function(){
return Promociones.findOne({'metadata.nombrePromo': this.params.promo_name});
}
});
});
这就是我生成动态路由的方式,我得到了这样的结果 http://padonde.mx/Pi%C3%B1a%20Colada%202x1 我想将 %20 替换为另一个字符 - 或 +, 这在 iron router 上可行吗?
我不知道有任何 Iron-Router 配置可以改变这一点,但您可以执行以下操作:
添加名为 Collection Helpers 的小包:
$ meteor add dburles:collection-helpers
然后在 Collection 中定义一个虚拟字段(例如:polished_promo_name):
Promociones.helpers({
polished_promo_name: function() {
return this.promo_name.replace(/ /g, "AnotherCharacter");
}
});
当然现在使用 polished_promo_name 而不是 promo_name 并将空格替换回:
Router.map(function () {
this.route('promos', {
path: '/:polished_promo_name',
waitOn: function(){
return Meteor.subscribe("promo", this.params.polished_promo_name.replace(/AnotherCharacter/g, " "));
},
data: function(){
return Promociones.findOne({'metadata.nombrePromo': this.params.polished_promo_name.replace(/AnotherCharacter/g, " ")});
}
});
});
这实际上是一个stander URL编码,它不是由浏览器设置的 铁路由器。
你可以做到,
你在哪里插入
'metadata.nombrePromo', add another field to the collection like
'metadata.nombrePromoReplace'
,然后执行此操作。
我猜你有类似
var nombrePromo = $('#idElementPromo').val();
,或 session
或您将值传递给元数据的任何内容
所以基于那个 var nombrePromo
做这个。
var nombrePromoReplace = nombrePromo.replace(/\s+/g, '');
现在改变路线。
Router.map(function () {
this.route('promos', {
path: '/:promo_name',
waitOn: function(){
return Meteor.subscribe("promo", this.params.promo_name);
},
data: function(){
return Promociones.findOne({'metadata.nombrePromoReplace': this.params.promo_name});
}
});
});
现在,当您导航到 /:promo_name 时,如果您添加了类似
的内容i have blanks spaces
路线应该是
/ihaveblankspaces
应该可以。