2011-02-16 34 views
0

我在使用Rails + JQuery生態系統中的Ajax查詢時遇到了一些麻煩。 我想要做的是在單擊鏈接時更新跨度的內容和AJAX請求的答案。Rails + JQuery:無法使用Ajax查詢更新跨度內容

這是我的觀點的有趣的部分:

<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", "https://stackoverflow.com/users/new/delete_avatar?id=#{@user.login}", :remote => true, :confirm => "Etes-vous sur?" %> 

我的目標是ID爲「阿凡達」,以更新的跨度時,點擊最後一個環節。 這裏是接收請求的代碼:

def delete_avatar 
     user = User.find_by_login(params[:id]) 
     user.avatar.destroy 
     respond_to do |format| 
      format.html { redirect_to edit_user_path @user } 
      format.js 
     end 
    end 

這裏是delete_avatar.rb.js文件,由所謂的respond_to:

$("#avatar").html("<%= gravatar_for @user %>"); 

現在,當我點擊鏈接和使用上螢火蟲的查詢分析工具,我得到的是一個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。

+0

,如果你將文件重命名爲`delete_avatar.js.erb`會發生什麼? – 2011-02-16 19:49:33

+0

對不起,我把錯誤的文件名。該文件的名稱確實是delete_avatar.js.erb! – Elhu 2011-02-16 21:05:58

回答

0

您需要的JavaScript逃避你garatar_for在Rails代碼,就像這樣:

$("#avatar").html("<%= escape_javascript gravatar_for @user %>"); 

的問題是,你在你的字符串qoutes(「),這使得JavaScript的非法的(除非。你使用'爲jquery的html方法,而不是「,但那只是一個糟糕的解決方法)

此外,它可能是一個好主意,從RailsCasts在rails和jQuery上觀看這個小exerate screencast。他提到這在那個情節:http://railscasts.com/episodes/136-jquery

希望這有助於你出去