我是一名新的Rails开发人员。所以当我尝试向我的控制器发送AJAX发布请求时,我得到500内部服务器错误。有我的Rails控制器
class MainController < ApplicationController
before_action :authenticate_user!, except: :index
def index
@auctions = Auction.last(5)
end
def rate
@auction = Auction.find(params[:id])
if current_user.rates_count > 0
@auction.user = current_user
@auction.save
current_user.rates_count -= 1
current_user.save
@auction.user.login
else
'Error'
end
end
end
这是我的application.js代码
$(document).ready(function() {
$(".products-bet").click(function() {
$.ajax({
type: 'POST',
url: '/rate',
data: {'id': auct_id }
});
});$(document).ready(function() {
$(".products-bet").click(function() {
$.ajax({
type: 'POST',
url: '/rate',
data: {'id': auct_id }
});
}); });
这是我的routes.rb
Rails.application.routes.draw do
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
devise_for :users, :controllers => { registrations: 'registrations' }
root 'main#index'
post 'rate', to: 'main#rate'
end
所以,我无法理解我做错了什么。
答案 0 :(得分:0)
这可能是一些事情 - 你得到500错误意味着它可能正确路由,否则你会得到404.可能是@auction是nil或current_user没有rates_count方法或属性
但是通过查看@ your development.log文件来调试应该相当容易。通常使用ajax,您可以通过删除路由中的“post”限制来轻松调试,然后通过在浏览器中键入来进行调用,以便在浏览器上显示堆栈跟踪。
您也可以尝试使用调试器来逐步完成它。