对于 Rails 3.1 应用程序,我的一些站点范围的 JavaScript 仅在满足某些实时、实例特定条件时才包含。这意味着我不能将它放在新资产管道的 application.js 中,因为 erb 没有为当前上下文中的嵌入式 Ruby 解析它。基本上,我根据登录的 current_user 包括键盘快捷键。
我的问题:这个带有嵌入代码的 JavaScript 应该去哪里,以便仍然使用正确的上下文(即当前的登录用户)为每个页面访问解析嵌入的 Ruby?
答案似乎只是将它放在底部的 application.html.erb 布局视图中,但这就像我将 JavaScript 代码隐藏在一个不直观的位置一样。
我尝试创建一个 application2.js.erb 文件,但随后出现有关未定义变量的错误,我认为这可能是因为资产引擎仅在缓存输出之前解析此文件一次,并且范围尚不正确current_user 之类的东西。
因此,使用 application.html.erb 在这里工作得很好,这不是如何让它正常工作的问题。相反,我想知道是否有一种更优雅的方法可以将资产管道模型与我的需求结合起来,并且仍然将我的大部分 JavaScript 保留在 assets/javascripts 目录中。