Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails+JQuery:无法使用Ajax查询更新span内容_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

Rails+JQuery:无法使用Ajax查询更新span内容

Rails+JQuery:无法使用Ajax查询更新span内容,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,我在Rails+JQuery生态系统中使用Ajax查询时遇到一些问题。 我想做的是在单击链接时用AJAX请求的答案更新span的内容 以下是我观点中有趣的部分: <div class="field"> <%= f.label "Avatar (laissez vide pour utiliser votre gravatar)" %><br /> <span id="avatar"> <%= gravatar_for @user %&

我在Rails+JQuery生态系统中使用Ajax查询时遇到一些问题。 我想做的是在单击链接时用AJAX请求的答案更新span的内容

以下是我观点中有趣的部分:

<div class="field">
<%= f.label "Avatar (laissez vide pour utiliser votre gravatar)" %><br />
<span id="avatar">
    <%= gravatar_for @user %>
</span><br />   
<%= link_to "Editer votre gravatar", "http://www.gravatar.com/emails", :target => :_blank %><br />
<%= f.file_field :avatar %>
<%= link_to "Supprimer avatar", "/users/new/delete_avatar?id=#{@user.login}", :remote => true, :confirm => "Etes-vous sur?" %>
下面是delete_avatar.rb.js文件,由respond_调用:

$("#avatar").html("<%= gravatar_for @user %>");
现在,当我点击链接并使用Firebug的查询分析工具时,我得到的是一个get请求,根据内容是否与之前相同,状态代码为304或200,内容如下:

$("#avatar").html("<img alt="foobar" class="gravatar" src="http://gravatar.com/avatar/f3ada405ce890b6f8204094deb12d8a8?size=150&amp;default=http%3A%2F%2Fskullslab.elhu.me%2Fimages%2Fskl_avatar.png" />");
这似乎是我所期待的,但我不知道为什么,页面的内容没有被修改

我已经在这个问题上纠缠了几个小时了,我很确定答案是非常简单的。。。但是我会感谢任何帮助的,谢谢


PS:JQuery已正确加载到我的应用程序中,因为在不尝试使用AJAX的情况下,我可以在单击链接时更新span的内容。

您需要在rails代码中用javascript转义garatar\u,如下所示:

$("#avatar").html("<%= escape_javascript gravatar_for @user %>");
问题是字符串中有qoutes,这使得javascript非法。除非在jQueryHTML方法中使用“而不是”,但这只是一个糟糕的解决方法

另外,在rails和jQuery上观看RailsCasts的这段精彩视频可能是个好主意。他在那一集中提到了这一点:


希望这对您有所帮助

如果您将文件重命名为delete_avatar.js.erb会发生什么?对不起,我输入了错误的文件名。该文件名为delete_avatar.js.erb!很好用,非常感谢!我被困在这个问题上,我真的不知道为什么。我现在就去看这个节目,下次可能会省下很多时间犯这样愚蠢的错误。再次,非常感谢!
$("#avatar").html("<%= escape_javascript gravatar_for @user %>");