2013-06-21 47 views
0

我在試圖將一些js.erb腳本包含到我的視圖中。簡單地說,因爲我編寫了一個基於輪詢的聊天記錄,我想保持它非常簡單,但實際上它最終比我最初想象的要複雜得多。試圖將.js.erb文件包含到視圖中

這裏是我的js.erb腳本代碼:

$(document).ready(function() { 

    $(function() { 
    setTimeout(updateMessages, 1000); 

}); 

function updateMessages() { 
    var game_id = $("#game_chat").attr("data-id"); 
    $("#messages").html("<%=escape_javascript(render(:partial => 'messages')) %> "); 
    setTimeout(updateMessages, 1000); 
} 

}); 

和我的部分僅僅是

<%= render @messages %> 

我真的來到這裏stucked,它似乎像有沒有簡單的方法,包括.js文件。視圖內的erb代碼。我的意思是這樣的:

<%= javascript_include_tag "games/messages.js.erb" %> 

回答

1

那麼你不需要.js.erb如果你使用資產管道。 <%= javascript_include_tag「games/messages」%>。傾斜(決定使用哪個模板引擎的引擎)將從右側開始並返回,以便瀏覽器和視圖確實只能看到.js文件。這就是說,從JS的角度來看,這樣做會使自己面臨一系列的醜陋。當你包含這樣一個大字符串時,它會觸發代碼上的eval。如果你能100%信任你的源代碼,這很好,但如果你不小心的話,你可以打開自己的xss。

+0

我需要它是js.erb,因爲我使用「渲染」。如果有辦法只用js刷新視圖,請告訴我。 (我只是在1秒後刷新一個消息列表) –