Rails 4应用程序中的$ .ajax请求不呈现视图

时间:2014-11-15 00:06:12

标签: javascript jquery ruby-on-rails ajax

我是Rails的新手,我试图从javascxript向控制器方法提交模型数据,并渲染结果列表......

function submitResults() {
  resultURL = "/result";
  resultData = JSON.stringify(results);
  $.ajax({
    type: "POST",
    url: resultURL,
    data: { results: resultData},
    contentType: "application/html",
    dataType: "html"
  });  

服务器显示执行控制器方法并呈现视图...

Started POST "/result" for 127.0.0.1 at 2014-11-14 17:36:32 -0600
Processing by ResultsController#create as HTML
  Result Load (0.7ms)  SELECT "results".* FROM "results"
  Rendered results/index.html.erb within layouts/application (366.0ms)
Completed 200 OK in 4722ms (Views: 408.3ms | ActiveRecord: 1.3ms)

但浏览器无法呈现视图。这是我的创建方法,由$ .ajax调用触发...

def create
  result = Result.new(result_params)
  result.save
  @results = Result.all
  respond_to do |format|
    format.html { render :index }
  end
end

为什么浏览器没有加载索引视图?

1 个答案:

答案 0 :(得分:1)

你的ajax调用没有对响应做任何事情,为它定义回调函数。 E.g:

$.ajax({
  type: "POST",
  url: resultURL,
  data: { results: resultData},
  contentType: "application/html",
  dataType: "html"
}).done(function(response) {
  //attach the response somewhere in the DOM.
});

检查所有回调的AJAX文档。

顺便说一句,你通常不希望通过ajax调用加载整个html页面。好像您正在渲染的页面包含所有内容(似乎使用默认布局)。在这种情况下,进行AJAX调用可能没有任何好处(并且使事情变得更难),并且您可能希望通过html表单进行发布。