Rails 4:Ajax请求调用函数并返回值而不重定向

时间:2016-09-30 14:18:01

标签: jquery ruby-on-rails ajax

我有一个rails控制器函数,它调用模型函数来获取数据并返回该数据。我正在尝试使用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

的Ajax

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

1 个答案:

答案 0 :(得分: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
  });