2010-11-02 83 views
1

這裏是我的代碼Rails的escape_javascript沒有渲染的東西

$(function(){ 
$('#new_post').bind('ajax:success', function() { 
    $('.posts').append("<%=escape_javascript(render :partial=>'post', :loca\ 
ls=>{:post=>Post.new})%>"); 
    }); 
}); 

導致一個奇怪的輸出,頁面簡單地追加<%=escape_javascript(render :partial=>'post', :locals=>{:post=>Post.new})%>到我的清單。

有誰知道這是怎麼發生的呢? 謝謝!

回答

1

如果這是一個局部或視圖,請確保它被命名爲擴展名爲.js.erb或者您可能無法獲得正確的ERB插發生。

+0

你的意思是'post'(post.js.erb)?我把上面的代碼放在application.js中,它適用於我的'刪除',所以我認爲同樣的方法應該適用於'創建'。 – JayX 2010-11-02 16:46:36

+0

如果您的JavaScript中有ERB,那麼您不能將它放在'public/application.js'中,因爲它直接發送到瀏覽器而沒有插值。您需要的是創建一個路徑,以便返回適當的插補腳本。 – tadman 2010-11-02 17:34:35

2

我解決了這個問題,最終,謝謝!

其實我使用的方法第一,但沒有奏效。

因此,原來我在控制器,這可能會阻止Javascript渲染任何使用

format.js { render :nothing => true } 

此外,而是採用

<%= div_for post do %> 

我用

<tr><td> 

格式 爲我的單篇文章 ,我想這就是原因的一部分爲什麼我的javascript不工作

現在我create.js.erb只呈現

$('#posts').append("<%= escape_javascript(render(@post)) %>"); 

和它的作品。

謝謝你們,我是這個社區的新手(也是rails/javascript),但我已經學到了很多東西。