2011-10-19 127 views
1

我遇到了不顯眼的javascript問題。在我TwitterAccountController我:escape_javascript在Rails中無法正常工作

def unshare 
    @twitter_account = TwitterAccount.find(params[:id]) 
    #@twitter_account.update_attribute(:message_enabled, true) 
    respond_to do |format| 
    format.html { redirect_to @twitter_account.user } 
    format.js # responds to TwitterAccount/share.js.erb 
    end 
end 

這是當你在我的名爲「停止共享」

一個響應的unshare.js.erb視圖中單擊一個按鈕,會發生什麼情況是:

var div_name = '<%="div#share_form_#{@twitter_account.id}"%>' 
$(div_name).html("<%= escape_javascript(render(:partial => 'shared/share', :locals => {:twitter_account => @twitter_account}))%>"); 

假設將按鈕從「不共享」按鈕切換到「共享」按鈕。但是,在單擊「停止共享」按鈕時,這是從escape_javascript生成代碼:

<form accept-charset=UTF-8 action=/twitter_accounts/1/share data-remote=true method=get> 
    <div style=margin:0;padding:0;display:inline><input name=utf8 type=hidden value=&#x2713; /> 
    div>   
    <input name=commit type=submit value=share /> 
form> 

你可以告訴收盤標籤搞砸了,沒有人知道這樣做的原因???

我javascript_include_tag是:

<%= javascript_include_tag 'jquery.min.js', "rails.js", "d3.js","d3.time.js", "raphael.js", "collapse_menu.js" %> 

份額部分:

<%= form_tag(share_twitter_account_path(twitter_account), :method => 'get', :remote => true) do %> 
    <%= submit_tag "share"%> 
<% end %> 
+1

我認爲部分本身好? –

+0

偏好。它已經被測試了沒有JavaScript了。我錯過了什麼引號? – Whereisccguys

+0

我添加了份額部分。我仍然不清楚什麼屬性值將被引用。 – Whereisccguys

回答

0

正如我在評論中說的,我想通了。我在rails 3.0.8上,並且有一個escape_javascript的bug。更新的導軌,它工作正常。謝謝你們的幫助!

3

我覺得我有同樣的問題,只是改變

$(div_name).html("<%= escape_javascript(render(:partial => 'shared/share', :locals => {:twitter_account => @twitter_account}))%>"); 

$(div_name).html('<%= escape_javascript(render(:partial => "shared/share", :locals => {:twitter_account => @twitter_account}))%>'); 

這只是顛倒你單/雙引號的方式。值得一試:)

+0

非常感謝,但我知道有什麼問題! – Whereisccguys