Pla*_*Ton 2 ruby-on-rails-3.1 sprockets
我有一个动作
def new
@test_var = 'i want this to show'
end
Run Code Online (Sandbox Code Playgroud)
我想要做的就是将其注入到为该页面调用的javascript中.例如:
#app/assets/javascript/my_model.js.coffee.erb
$ ->
console.log('<%= @test_var %>')
Run Code Online (Sandbox Code Playgroud)
我猜这不起作用,因为在访问控制器之前编译了coffeescript/erb ...所以,如果我想在3.1中将控制器变量注入JavaScript文件(客户端 - 不能通过ajax访问),我应该怎么做呢?
我认为问题在于你正在考虑资产管道的全部错误...... 资产是一个有效的词汇.
它不是一个视图管道.其他资产是什么?图像和CSS文件,可以预处理然后按原样提供的东西.资产的erb /预处理不会发生在每个页面加载/请求上,而是发生在启动/文件更改中,因此在生产中,所述资产可以进行静态优化,缓存和服务.
您可能想出一种使用实时编译实现它的方法(参见http://guides.rubyonrails.org/asset_pipeline.html的第4.2节),但正如文档所说:
此模式使用更多内存,性能低于默认值.不推荐.
糟糕的答案是"将javascript注入您的视图",但是将您的javascript与rails控制器/视图分离是一个好主意.
一个更好的答案是拥有一个包含所有控制器javascripts的资产文件夹,并使用一些"我在哪个页面?" javascript以确定是否运行代码.
以下是一些解释各种方法的答案:
使用Rails 3.1,你在哪里放置你的"页面特定"的JavaScript代码?
归档时间: |
|
查看次数: |
1720 次 |
最近记录: |