【发布时间】:2014-11-19 18:59:07
【问题描述】:
我正在尝试使用 Rails 4 进行一个非常简单的 ajax 调用,但没有正确检索到 json 响应。
这是脚本:
$(document).on "submit", "form[name=upvote-form]", ->
form = $(this)
$.post "/vote", $(this).serialize(), (data) ->
if data["status"] is true
form.find("input").addClass "disabled"
$("#vote-count-".concat(form.find("#question_id").attr("value"))).html data["votes"]
else
return
return
alert(data['votes']) 是undefined,这让我试图找出问题所在。
然后在控制台中我可以看到:
ArgumentError (Nil location provided. Can't build URI.):
app/controllers/vote_controller.rb:8:in `vote'
这是有问题的方法:
class VoteController < ApplicationController
def vote
question_id = params[:question][:id]
user_id = current_user.id
vote = Vote.where(["question_id = :q", { q: question_id }]).where(["user_id = :u", { u: user_id }]).take
respond_to do |format|
if vote.nil?
@vote = Vote.new
@vote.question = Question.find question_id
@vote.user = User.find user_id
@vote.save
votes = Vote.where(["question_id = :q", { q: question_id }]).count
format.json { render :json => { status: true, votes: votes } }
else
format.json { render :json => { status: false } }
end
end
end
end
有什么线索吗?我能做什么?
【问题讨论】:
-
我认为这是因为您没有将资源传递给
respond_with并且它无法确定位置。尝试将其更改为respond_to或将:location选项传递给respond_with。 Reference
标签: javascript ruby-on-rails ajax json ruby-on-rails-4