What's the way to route based on Session.set without saving any data to collection? For example user inputs an URL to some site.
'submit #form': function (event, template) {
event.preventDefault();
var url = template.find('#input').value;
if (url)
Session.set('url', url);
}
What's the route file would look like, if we want to execute function based on an URL let's say to:
www.example.com/download?url=http://youtube.com
and execute function based on this input from an URL?
I don't like my current way of doing this. Seems to me too complicated as following:
Template.formButton.events({
'submit #form': function (event, template) {
event.preventDefault();
var url = template.find('#input').value;
if (url)
var linkId = Link.insert({
url: url,
});
var route = {_id:linkId};
Router.go('download', route);
}
});
this.route('download', {
path: '/download/:_id',
where: 'client',
data: function() {
return Link.findOne(this.params._id);
},
onBeforeAction: function() {
var data = this.data();
if (data)
var url = data.url;
console.log(url);
Meteor.call(getUrl, url, function(error, result) {
console.log(result)
this.next();
});
}
});
As MasterAM already said, just urlencode your url and provide it directly to your route, but as a query parameter, not a path component:
Template:
Template.formButton.events({
'submit #form': function (event, template) {
event.preventDefault();
var url = template.find('#input').value;
if (url)
Router.go('download?url=' + encodeURIComponent(url));
}
});
Router:
this.route('download', {
path: '/download',
onBeforeAction: function() {
var url = decodeURIComponent(this.params.query.url);
console.log(url);
Meteor.call(getUrl, url, function(error, result) {
console.log(result)
this.next();
});
}
});