使用jQuery将yield语句附加到application.html.erb的正文中?

时间:2011-04-19 02:39:59

标签: jquery ruby-on-rails

我正在使用rails应用程序,并希望更彻底地隐藏一些代码。 目前我的application.html.erb只有一个<%= yield%>我想把这个创作转移到jQuery。 我已经尝试将它放入我的application.js:

jQuery(function($) {
  $('<div id="wrapper"><%= escape_javascript(yield) %></div>').appendTo('body');
});

但它不起作用,我猜这是因为它不是一个erb文件所以不解析任何ruby。有没有办法在加载时获得这种功能?

干杯, 史蒂夫

4 个答案:

答案 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相同的文件中编写它。

尝试在布局中编写代码。

相关问题