在 Rails 3.2.13 中调用 ajax 后不渲染操作模板

Action template not rendering after an ajax call in Rails 3.2.13

提问人:JstRoRR 提问时间:4/30/2014 更新时间:4/30/2014 访问量:507

问:

我想通过从浏览器传递一些数据(一些文本值作为字符串)来执行 ajax 请求,并呈现我使用 ajax 向其发送请求的相同操作的视图。

我的工作流程是这样的:

  1. 用户上传两个文件 :calib 和 :inten。

  2. 应用程序使用回形针保存文件并解析不同实例变量中的信息。

  3. 解析文件后,应用程序会以 in create 操作的形式传递消息,并立即将 pr list 作为浏览器中的下拉列表提供给用户。flash[:notice]
  4. 有两个部分,它们在创建操作中呈现。_form_formTwo

  5. 当我执行ajax请求时,我处于创建视图中,并且我正在请求控制器中命名的其他操作。norm

  6. 在ajax调用之后,我希望应用程序在不刷新页面的情况下呈现。norm.html.erb

我的代码在这里:http://pastie.org/private/keykmwbzcrv04dfvkufsew

我尝试使用不显眼的javascript使用ajax,但我不知道如何使用link_to或button_to助手传递一些数据(如上所述)。

使用简单的jquery ajax,我可以将数据传递到服务器,但我的页面没有呈现。开发日志显示 Page 已呈现,但浏览器页面中没有任何更改。我知道我错过了什么,但无法弄清楚??

开发日志输出:

Started POST "/normalize" for 127.0.0.1 at 2014-04-30 13:38:43 +0200
Processing by UploadsController#normalize as */*
Parameters: {"data"=>"17,Poly-T-CY5,EukS_1209_25_dT"}
Upload Load (0.1ms)  SELECT `uploads`.* FROM `uploads` WHERE `uploads`.`id` = 17 LIMIT 1
Rendered uploads/_normalize.html.erb (0.2ms)
Rendered uploads/normalize.js.erb (1.0ms)
Completed 200 OK in 4ms (Views: 2.1ms | ActiveRecord: 0.1ms)

我希望我已经很好地解释了我的问题,如果我没有说清楚,请告诉我??

jQuery Ruby-on-Rails-3 JavaScript 不显眼的 AJAX

评论


答:

0赞 kempchee 4/30/2014 #1

Link_to允许您按如下方式传递data_hash:

<%=link_to("Link",link_path,:data=>{foo:"bar",hello:"goodbye"},remote:true)%>

查看您的代码,另一个问题是“norm.html.erb”文件不是部分文件。为了从“norm.js.erb”渲染它,您需要将其重命名为“_norm.html.erb”,以便 rails 将其识别为部分。

评论

0赞 JstRoRR 4/30/2014
谢谢你的解释......但我在我的代码中发现了一个主要问题,那就是我的 ajax 调用中的 dataType: 'string',它应该是 dataType: 'script'。我改变了它,一切正常。:)