Raf*_*ira 5 javascript view ruby-on-rails-3 sprockets asset-pipeline
好的,我已经阅读了很多关于新资产管道Rails 3.1的信息,我找不到对我的怀疑的正确答案.
我根据我正在渲染的视图#动作按需加载我的.js文件.我这样做是为了防止不正确的绑定并加载小的.js文件.
candidate_opportunities#指数
$(".sortable_drag_n_drop").sortable({
update: function(event, ui) {
$.post('/candidate_opportunities/sort', $(this).sortable('serialize'));
},
handle: 'span'
});
Run Code Online (Sandbox Code Playgroud)
candidate_companies#指数
$(".sortable_drag_n_drop").sortable({
update: function(event, ui) {
$.post('/candidate_companies/sort', $(this).sortable('serialize'));
},
handle: 'span'
});
$(".sortable_drag_n_drop").disableSelection();
Run Code Online (Sandbox Code Playgroud)
现在最好的解决方案是什么?
//=
require_tree .?编译我的所有.js文件?如果要将此更新到管道,您有几个选项.您应该采取管道在决定时应该考虑的方式.
从广义上讲,他管道的目的是将所有JS加入到一个文件中并对其进行minfy/compress.这样做的目的是减少每页请求的数量,并允许设置远期标头,以便在浏览器或透明代理/缓存中的某个位置缓存资源.
关于选项.
1.和你现在一样.
你可以继续做你知道的同样的事情.我假设您正在使用rails助手在主布局文件中添加这些视图JS文件.您可以继续对管道执行相同操作,但是您必须将所有使用的文件添加到预编译数组中:
config.assets.precompile += ['candidate_opportunities.js', 'candidate_companies']
资产必须位于assets/javascripts中,但不需要将它们添加到清单文件中,因为您要单独添加每个资产.
强烈建议您坚持使用管道的Rails默认值并预编译资产以进行生产.
缺点是这些页面上的额外请求,但如果应用程序处于高负载状态,这只是一个问题.
2.资产管道方式(TM)
要使用管道执行此操作,您需要将这些文件移动到assets/javascripts中,require_tree正如您所说.
在您的情况下,问题是JS片段针对同一个类(但具有不同的帖子URL),因此这不起作用.使用require_tree,文件的顺序可能不是您想要的.
一个新的3.1应用程序为视图生成文件(我认为),但期望它们将在标记中定位唯一属性(从站点的角度来看),因为所有文件都包含在application.js中
解决JS冲突的问题.我建议你重构JS片段,以便它更通用.您可以data-post-url在可排序对象上使用 属性:
<ul class="sortable_drag_n_drop" data-post-url="/candidate_opportunities/sort">
然后收集JS中的url.
不仅是DRYer,而且整体JS总体较少,并且可以按预期完全使用管道.
| 归档时间: |
|
| 查看次数: |
2214 次 |
| 最近记录: |