gpt4 book ai didi

javascript - Rails : POST 422 (Unprocessable Entity) in Rails? 由于路线或 Controller ?

转载 作者:数据小太阳 更新时间:2023-10-29 06:28:23 28 4
gpt4 key购买 nike

我正在尝试为我网站上的用户提供“积分”或“积分”,以发布有关品牌名称的推文。

我在适当的 View 上有漂亮的 Twitter 小部件...

<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>

我把 JS 都写好了......

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);
});
});

现在问题要么在 Controller 中,要么在路由中(我发布的地方)。我认为路由很好,因为 POST 几乎可以正常工作,因为这是维基百科上对错误的描述 - “422 Unprocessable Entity (WebDAV; RFC 4918)该请求格式正确,但由于语义错误而无法执行。”

那么,你们看到我在 Controller 中的 ruby​​ 代码有什么问题了吗?

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 请求。

最佳答案

我成功了!

我添加了一个...

skip_before_action :verify_authenticity_token

到 Controller 。

查看日志发现无法验证 CSRF token 的问题。

关于javascript - Rails : POST 422 (Unprocessable Entity) in Rails? 由于路线或 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27098239/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com