csc*_*sch 7 ruby-on-rails ruby-on-rails-3.1 asset-pipeline
我正在使用Ruby on Rails 3.1,我想知道如何在javascript资产中渲染部分内容.
我的目标是:
# in /app/assets/javascript/cart.js.coffee.erb
$('a.add_sth').click -> $('.random_container').append('<%= render partial: 'way/to/partial' %>')
Run Code Online (Sandbox Code Playgroud)
这会导致NoMethodError:
undefined method `render' for #<#<Class:0x007fc54584c6e8>:0x007fc5474cd470>
Run Code Online (Sandbox Code Playgroud)
如果我写,<%= 2+3 %>它工作正常,顺便说一句.
我认为问题是资产管道独立于默认的ActionView,这就是为什么render()在那里未知.无论如何,有没有办法让部分内容呈现?
请记住,资产适用于静态数据,如CSS,JS或不会动态更改其内容的图像,因此可以更好地缓存和/或导出到CDN.
由于允许您使用ruby代码运行ERB,因此它应始终返回相同的值(因为它仅在编译资产时执行).
这就是为什么我猜渲染在资产内部不可用(尽管它可以正确地用于渲染静态数据).
这里简单的解决方案:将您的JS文件移动到视图,在那里您将能够使用任何视图助手.
| 归档时间: |
|
| 查看次数: |
6707 次 |
| 最近记录: |