Ruby on rails 邮递http://localhost:3000/post/vote 500(内部服务器错误)-没有与[GET]匹配的路由/张贴/投票“;尝试在Rails中发布ajax时
我正在使用投票按钮,试图在RoR中发布ajax,但无法通过它 请检查我的路线控制器和ajax,如下所示:Ruby on rails 邮递http://localhost:3000/post/vote 500(内部服务器错误)-没有与[GET]匹配的路由/张贴/投票“;尝试在Rails中发布ajax时,ruby-on-rails,ajax,Ruby On Rails,Ajax,我正在使用投票按钮,试图在RoR中发布ajax,但无法通过它 请检查我的路线控制器和ajax,如下所示: post 'post/vote' => 'votes#create' 我现在想要的是记录“成功”为什么会出现错误http://localhost:3000/post/vote 500(内部服务器错误)出现,当我尝试转到http://localhost:3000/post/vote 在尝试发布ajax时,它不显示与[GET]“/post/vote”匹配的路由。看起来像当前帐户是ni
post 'post/vote' => 'votes#create'
我现在想要的是记录“成功”为什么会出现错误http://localhost:3000/post/vote 500(内部服务器错误)出现,当我尝试转到http://localhost:3000/post/vote 在尝试发布ajax时,它不显示与[GET]“/post/vote”匹配的路由。看起来像
当前帐户
是nil
。将以下代码添加到VotesController
以确保用户已通过身份验证
在\u操作之前:验证\u帐户!
authenticate\u帐户代码>方法将为控制器中定义的每个操作调用。您可以共享POST请求的rails日志吗?是的,先生,它如下所示:NoMethodError(未定义的方法id'for nil:NilClass):app/controllers/voces\u controller.rb:6:in
create'Started POST”/POST/votefor::1在2021-02-27 12:58:29+0700由VotesController进行的处理#创建为/参数:{“post_id”=>“2”}在3ms内完成了500个内部服务器错误(ActiveRecord:0.0ms |分配:1234)NoMethodError(对于nil:NilClass,未定义的方法id')):app/controllers/vows\u controller.rb:6:in
create'omg真的很抱歉我的愚蠢,谢谢你的帮助!抱歉,我原以为它可以正常工作,但新问题出现了。POST 401(未经授权)显示为ActionController::RoutingError(没有与[GET]“/POST/vote]匹配的路由):@Kamidesu用户登录了吗?为什么GET请求被发送到/post/vote
?对不起,先生,我在尝试按下按钮之前忘记登录,但仍然不知道为什么我没有登录时会有GET请求。无论如何,谢谢你的帮助。votesconneler#create
方法呈现vows/create.js.erb
对吗?那么为什么要使用$.ajax
?您可以将按钮\u与remote:true
一起用于向上投票按钮。感谢您的建议。这是我学习的一部分,我只是试着遵循一个教程。它说有很多帖子和upvote downvote按钮,所以使用js比表单更好,但它没有告诉我原因。
class VotesController < ApplicationController
def create
vote = Vote.new
post_id = params[:post_id]
vote.post_id = params[:post_id]
vote.account_id = current_account.id
existing_vote = Vote.where(account_id: current_account.id, post_id: post_id)
respond_to do |format|
format.js do
if existing_vote.size > 0
existing_vote.first.destroy
else
@success = if vote.save
true
else
false
end
@post = Post.find(post_id)
@total_upvotes = @post.upvotes
@total_downvotes = @post.downvotes
end
end
end
end
$(function () {
$(".vote").on("click", ".upvote", function () {
let post_id = $(this).parent().data("id");
console.log("clicked " + post_id);
$.ajax({
url: "post/vote",
type:'POST',
data: { post_id: post_id },
success: function(){
console.log("success");
}
});
});
});
NoMethodError (undefined method `id' for nil:NilClass):
app/controllers/votes_controller.rb:6:in `create'
Started POST "/post/vote" for ::1 at 2021-02-27 12:58:29 +0700
Processing by VotesController#create as */*
Parameters: {"post_id"=>"2"}
Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.0ms | Allocations: 1234)
NoMethodError (undefined method `id' for nil:NilClass):
app/controllers/votes_controller.rb:6:in `create'