我正在尝试从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' }
答案 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,如果没有记录在数据库中)