我正在试图在我的视图中包含一些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 %>
我真的被困在这里,似乎没有简单的方法在视图中包含.js.erb代码。我的意思是:
<%= javascript_include_tag "games/messages.js.erb" %>
答案 0 :(得分:1)
如果您正在使用资产管道,那么您不需要.js.erb。 &lt;%= javascript_include_tag“游戏/消息”%&gt;。 Tilt(决定使用哪个模板引擎的引擎)将从右侧开始并继续工作,因此浏览器和视图实际上只能看到.js文件。话虽这么说,从JS的角度来看,这样可以让你自己达到一系列的丑陋。如果包含类似的大字符串,它将触发代码的eval。如果您可以100%信任您的来源,这很好,但如果您不小心,请打开自己的xss。