मैं ब्रांड नाम के बारे में ट्वीट करने के लिए उपयोगकर्ताओं को अपनी वेबसाइट "अंक" या "क्रेडिट" पर देने की कोशिश कर रहा हूं।पोस्ट 422 (अप्राप्य इकाई)? मार्ग या नियंत्रक के कारण?
मैं उचित दृश्य पर फैंसी चहचहाना विजेट है ...
<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>
मैं जे एस सब लिखा है और बहुत ....
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);
});
});
अब समस्या या तो में है नियंत्रक या मार्गों में (जहां मैं पोस्ट कर रहा हूं)। मुझे लगता है कि मार्ग ठीक हैं क्योंकि पोस्ट लगभग काम कर रहा है, क्योंकि यह विकिपीडिया पर त्रुटि का वर्णन है - "422 अनप्रचारनीय इकाई (वेबडीवीवी; आरएफसी 4918) अनुरोध अच्छी तरह से गठित किया गया था लेकिन अर्थपूर्ण के कारण इसका पालन करने में असमर्थ था त्रुटियों। "
तो, क्या आप लोग नियंत्रक में अपने रूबी कोड के साथ कुछ भी गलत देखते हैं?
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
और मेरी routes.rb में, यह बहुत सीधे आगे है, तो मुझे शक है क्या यहाँ गलत क्या है ...
get 'social_kredit/credit_tweet'
post '/credit_tweet' => 'social_kredit#credit_tweet'
कहाँ ओह जहां इस त्रुटि है? मैं स्पष्ट रूप से HTTP अनुरोधों के बारे में स्मैक नहीं जानता।
आईएमई रेल आमतौर पर 422 लौटाता है जब ActiveRecord ऑब्जेक्ट अद्यतन/सहेजने में विफल रहता है। आपका लॉग क्या कहता है? – ihaztehcodez
ऐसा लगता है .... 127.0.0.1 के लिए 2014-11-24 00:34:53 -0500 सोशल क्रेडिट क्रेडिट नियंत्रक द्वारा प्रसंस्करण # क्रेडिट_टविट */* सीएसआरएफ टोकन प्रामाणिकता को सत्यापित नहीं कर सकता 1ms एक्शनकंट्रोलर :: अमान्य प्रमाणीकरण टोकन - एक्शनकंट्रोलर :: अमान्य प्रमाणीकरण टोकन: – piratetone
क्या आप रेल सर्वर से लॉग को पोस्ट कर सकते हैं जो इस त्रुटि को दिखाते हैं? साथ ही, आपके पास दो मार्ग 'get' और 'post' क्यों एक ही विधि को इंगित करते हैं? – Surya