TechplexEngineer
6/11/2016 - 8:13 PM

PathFor template helper designed to imitate the functionality of the Iron:Router pathFor helper but using Flow Router in Meteor.

PathFor template helper designed to imitate the functionality of the Iron:Router pathFor helper but using Flow Router in Meteor.

Template.registerHelper('pathFor', function (options) {
	var routeName;

	if (arguments.length > 1) {
		routeName = arguments[0];
		options = arguments[1] || {};
	}

	var opts = options && options.hash;

	opts = opts || {};

	var path = '';
	var query = opts.query;
	var hash = opts.hash;
	var routeName = routeName || opts.route;
	var data = _.extend({}, opts.data || this);

	var keys = Object.keys(FlowRouter.current().route._params.keys);
	_.each(keys, function (keyConfig) {
		var key = keyConfig.name;
		if (_.has(opts, key)) {
			data[key] = EJSON.clone(opts[key]);

			// so the option doesn't end up on the element as an attribute
			delete opts[key];
		}
	});

	path = FlowRouter.path(routeName, data, query);

	return path;
});