Monday, May 20, 2024
167
rated 0 times [  169] [ 2]  / answers: 1 / hits: 86840  / 10 Years ago, mon, november 24, 2014, 12:00:00

I'm trying to give users on my website points or credits for tweeting about out the brand name.



I have the fancy twitter widget on the appropriate view...



<p><a  href=https://twitter.com/share class=twitter-share-button data-text=Check Out This Awesome Website Yay data-via=BrandName data-hashtags=ProductName>Tweet</a>
<div id=credited></div>
<script>window.twttr = (function (d, s, id) {
var t, js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src= https://platform.twitter.com/widgets.js;
fjs.parentNode.insertBefore(js, fjs);
return window.twttr || (t = { _e: [], ready: function (f) { t._e.push(f) } });
}(document, script, twitter-wjs));
</script>


I have the JS all written up and pretty....



function creditTweet() {
$.post(
/credit_tweet,
{},
function(result) {
var text;
if (result.status === noop) {
text = Thanks for sharing already!;
} else if (result.status === ok) {
text = 5 Kredit Added;
}
$(#credited).html(text);
}
);
}

$(function() {
twttr.ready(function (twttr) {
window.twttr.events.bind('tweet', creditTweet);
});
});


Now the problem is either in the controller OR in the routes (where I'm posting). I think the routes are fine because the POST is almost working, because this is the description of the error on wikipedia - 422 Unprocessable Entity (WebDAV; RFC 4918)
The request was well-formed but was unable to be followed due to semantic errors.



So, do you guys see anything wrong with my ruby code in the controller?



class SocialKreditController < ApplicationController
TWEET_CREDIT_AMOUNT = 5

def credit_tweet
if !signed_in?
render json: { status: :error }
elsif current_user.tweet_credited
Rails.logger.info Not crediting #{ current_user.id }
render json: { status: :noop }
else
Rails.logger.info Crediting #{ current_user.id }
current_user.update_attributes tweet_credited: true
current_user.add_points TWEET_CREDIT_AMOUNT
render json: { status: :ok }
end
end
end


And in my routes.rb, it's pretty straight forward, so I doubt there's anything wrong here...



  get 'social_kredit/credit_tweet'
post '/credit_tweet' => 'social_kredit#credit_tweet'


Where oh where is this error? I clearly don't know smack about HTTP requests.


More From » ruby-on-rails

 Answers
5

I got it working!



I added a...



skip_before_action :verify_authenticity_token


to the controller.



The issue was found when checking out the logs and seeing that the CSRF token could not be verified.


[#68725] Thursday, November 20, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jenamackennac

Total Points: 304
Total Questions: 110
Total Answers: 107

Location: Ecuador
Member since Thu, Jun 4, 2020
4 Years ago
jenamackennac questions
Fri, Feb 18, 22, 00:00, 2 Years ago
Wed, Apr 21, 21, 00:00, 3 Years ago
Thu, Apr 1, 21, 00:00, 3 Years ago
Tue, Feb 2, 21, 00:00, 3 Years ago
;