我正在使用rails应用程序,并希望更彻底地隐藏一些代码。 目前我的application.html.erb只有一个<%= yield%>我想把这个创作转移到jQuery。 我已经尝试将它放入我的application.js:
jQuery(function($) {
$('<div id="wrapper"><%= escape_javascript(yield) %></div>').appendTo('body');
});
但它不起作用,我猜这是因为它不是一个erb文件所以不解析任何ruby。有没有办法在加载时获得这种功能?
干杯, 史蒂夫
答案 0 :(得分:1)
我把它整理出来了。感谢您的回复,但我想澄清一下:您实际上可以从客户端js中使用ERB,我会定期使用render()方法。 例如。
$('#myDiv').html("<%= escape_javascript(render( :partial => 'profile' )) %>");
这很好用。我的目标是从标准的右键单击 - &gt;视图源屏蔽ERB文件呈现的html。我知道他们仍然可以使用DOM检查器来查看所有内容。我通过将标准的application.html.erb与&lt;%= yield%&gt;一起实现了这一点。声明,但是我修改了我的下一个动作方法(show)来渲染javascript,我使用jQuery创建了我的show.js.erb,然后我使用partial动态地将我的页面的其余部分附加到body标签。
答案 1 :(得分:0)
在将结果发送到浏览器之前,在服务器端处理<%= yield %>
内容,您无法从客户端JS生成ERB并期望它能够正常工作。
你对这种交互的唯一选择(不是我推荐这个)就是让你的onload
在服务器上调用AJAX方法,该方法通过文档的某些部分发送,你的JS然后可以呈现给浏览器。
答案 2 :(得分:0)
你在哪里使用你的javascript代码?你在使用外部文件吗? yield语句仅在您在同一页面上使用代码时才有效,它不适用于外部文件
答案 3 :(得分:0)
根据您的说法,您似乎正在编写application.js中的js代码。 这不行。 您需要在与存在yield的HTML相同的文件中编写它。
尝试在布局中编写代码。