试图理解Rails ajax js代码

时间:2018-04-02 12:11:17

标签: ruby-on-rails

我一直试图找出如何在通过Ajax创建注释之前添加注释,我在表单中添加了remote true。在控制器中插入块,然后它获得了js文件,我在前面添加了新注释。我无法弄明白。我在SO上遇到了这个代码并且很快给了它一个镜头并且它起作用了。但我不知道为什么/如何?

这是代码:JS文件,

$("<%= escape_javascript(render @message) %>").prependTo(".view-messages");

这是它前置的div

<div class="view-messages">
  <%= nested_messages @messages.arrange(:order => :created_at) %>
</div>

这一行$("<%= escape_javascript(render @message) %>")我试过调试但不能,

那是什么打印出来的,它是其中一种神奇的东西还是我是愚蠢的?

虽然它有效但我想知道为什么以及怎么这样如果有人能帮助我,我会感激不尽。

由于

编辑:

$("<div class=\"body body-144\">\n  <span class=\"tip tip-left\"><\/span>\n  <div class=\"message font-medium\">\n    ellll <br />\n  <\/div>\n  <div class=\"flerowspb\">\n    <span class=\"font-small\">\n      <a href=\"/profiles/122\">Nyall2911(28)<\/a>\n      <\/span>\n      <span class=\"font-small\">\n        <a href=\"/messages/new?entry_id=344&amp;parent_id=144\">Reply<\/a>\n      <a rel=\"nofollow\" data-method=\"delete\" href=\"/messages/144\">| Delete<\/a>\n    <\/span>\n  <\/div>\n<\/div>\n")

这就是它的渲染,所以我想我的问题是,如何通过调用(render @message)

来获取评论的所有HTML部分

1 个答案:

答案 0 :(得分:0)

以下是escape_javascript方法:https://github.com/rails/rails/blob/55f9b8129a50206513264824abb44088230793c2/actionview/lib/action_view/helpers/javascript_helper.rb#L25

根据方法下面的注释,它看起来像是替换了一些不安全的字符,并使用html_safe方法返回原始HTML。 jQuery然后将原始HTML添加到您的div。