当ajax发布时,rails内部服务器出错

时间:2015-11-21 19:07:20

标签: javascript ruby-on-rails ajax routes internal-server-error

我是一名新的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

所以,我无法理解我做错了什么。

1 个答案:

答案 0 :(得分:0)

这可能是一些事情 - 你得到500错误意味着它可能正确路由,否则你会得到404.可能是@auction是nil或current_user没有rates_count方法或属性

但是通过查看@ your development.log文件来调试应该相当容易。通常使用ajax,您可以通过删除路由中的“post”限制来轻松调试,然后通过在浏览器中键入来进行调用,以便在浏览器上显示堆栈跟踪。

您也可以尝试使用调试器来逐步完成它。