rails 500内部服务器错误

时间:2017-08-19 14:49:10

标签: javascript ruby-on-rails ajax

我正在尝试从rails中的数据库中获取数据,这是我的控制器文件

 class PathsController < ApplicationController
  before_filter :authenticate_user!
  skip_before_filter :verify_authenticity_token
  def getall
    @result = Path.select('x', 'y')
  end
    respond_to do |format|
      format.json { render json: @result }
    end

end

这是我的js函数

function makelines()
{
  $.ajax({
    type: "GET",// => method type
    url: "/path", // => Target function that will be return result 
    contentType:"application/json",
    success: function(result){
      result = JSON.parse(result);
      console.log(result);
    }
  });
}

这是路线

  match '/path => 'Paths#getall', via: [:get, :post], :default => { :format => 'json' }

2 个答案:

答案 0 :(得分:1)

在这种情况下你应该做的第一件事是咨询你的控制台或日志;这将有助于查明异常。

那就是说,我会猜测并保证问题在于您在控制器操作之外调用respond_to

def getall
    @result = Path.select('x', 'y')
end
  respond_to do |format|
    format.json { render json: @result }
  end

应该是:

def getall
    @result = Path.select('x', 'y')

    respond_to do |format|
      format.json { render json: @result }
    end
end

答案 1 :(得分:0)

让我们稍微改进你的代码:

def getall
    @results = Path.select('x', 'y')
    respond_to do |format|
      if @results.count > 0
        format.json { render json: @results, , status: :ok }
      else
        format.json { render json: @results.errors, , status: :not_found }
      end
    end
end

每个Rails惯例最好返回results而不是result,因为您返回的项目超过1个。

我还认为,当你向你的AJAX方法返回一个JSON对象时,最好返回200(:ok)或404(:not_found,如果没有记录在数据库中)