2016-09-30 114 views
0

我有一个rails控制器函数,它调用模型函数来获取数据并返回该数据。我正在尝试使用ajax进行函数调用,并且不需要任何重定向,因为所有我关心的都是要返回的值。 如何在不重新加载页面/获取缺少模板错误的情况下完成此操作?Rails 4:Ajax请求调用函数并返回值而不重定向

控制器

def update_sales 
    @data = ControllerName.function_name() 
    return @data # What I want 
    redirect_to path_name # what I don't want 
end 

型号

def self.function_name 
    ... 
    ... 
    return data 
end 

阿贾克斯

$.get("/update_sales").done(function(data){ 
    console.log(data); 
    // I would set html attribute to data but I get missing template error 
}) 

回答

1

可以尝试小号在控制器操作中有这样的东西吗?

if @data.save 
    // send the object back to interface 
    render json: @data.serialize.to_json, status: :ok 
else 
    // send the errors back to interface 
    render json: @data.errors.full_messages, status: :internal_server_error 
end 

Ajax调用:

$.ajax({ 
    url:"/update_sales", 
    type: "PATCH", 
    data: data_to_send 
    }).done(function(data, textStatus, jqXHR) { 
    // do stuff when it is done 
    }).fail(function(jqXHR, textStatus, errorThrown){ 
    // do stuff if it errors out 
    }); 
+0

太好了!我删除了'.save'部分,并验证了'@ data'的存在,但是这个工作像一个魅力 –

+0

真棒!乐意效劳 – Eric