Skip to content

Instantly share code, notes, and snippets.

View rpearce's full-sized avatar

Robert Pearce rpearce

View GitHub Profile
@rpearce
rpearce / redirect_to_seo_friendly_id.rb
Last active December 15, 2015 08:19
Redirect non-slugged id to SEO-friendly
// PostsController...
def show
@post = Post.find params[:id]
if params[:id] != @post.to_param
headers["Status"] = "301 Moved Permanently"
redirect_to post_url(@post)
end
end
@rpearce
rpearce / override_to_param_method.rb
Last active December 15, 2015 08:19
Override to_param method
// Post model
def to_param
sluggify("#{id}-#{location_from}-to-#{location_to}")
end
def sluggify str
slug = str.downcase.gsub(/[^0-9a-z_ -]/i, '')
slug = slug.gsub(/\s+/, '-').squeeze('-')
var user = new User();
var view = new UserShow({ model: user });
view.render();
$('body').append(view.el);​
var UserShow = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'render');
},
render: function() {
$('#name').html(this.model.get('fullName'))
this.fetchTrustCloudInfo();
},
var User = Backbone.Model.extend({
defaults: {
email: 'robertwaltonpearce@gmail.com',
fullName: 'Robert Pearce'
}
});
renderTrustScore: function(user) {
$('#trustscore').html(user.trustscore);
}
renderTrustCloudInfo: function(data) {
if(data.code === 200) {
this.renderTrustScore(data.user)
this.renderTrustCloudNetworks(data.user);
} else {
this.renderTrustCardAbsent();
}
}
renderTrustCloudNetworks: function(user) {
_.each(user.networks, function(item) {
var iconHtml = '<li><a target="_new" href="'+item.url+'"><img src="'+item.icon+'" /></a></li>';
$('.badges').append(iconHtml);
});
},
renderTrustCardAbsent: function() {
$('.badges').append('<li>No TrustCard Found!</li>');
}
var User = Backbone.Model.extend({
defaults: {
email: 'robertwaltonpearce@gmail.com',
}
});
var UserShow = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'render');
},
fetchTrustCloudInfo: function() {
var self = this;
$.ajax({
method: 'get',
url: 'https://api.trustcloud.com/profile/getProfile?userid=email-' + this.model.get('email'),
dataType: 'json',
success: function(data) {
self.renderTrustCloudInfo(data);
}
});