如何将Javascript文件导入Haml视图?
我想在Haml视图中包含一些Javascriptfunction,但我不希望它插入到每个视图中。 我是否必须将Javascript文件放在public / javascripts中,或者我可以将它放在app / assets / javascripts中以使其对用户隐藏,并仍然在haml视图文件中引用?
如果可能的话,你会如何做这两个选择?
你应该使用
!!! %html %head = javascript_include_tag "my_js_file"
如果它特定于一个地方,你应该使用content_for
!!! %html %head = yield(:javascripts)
然后在你看来
- content_for :javascripts do = javascript_include_tag "my_js_file"
直接包括
如果你想将javascript直接包含在haml中,你可以使用:javascript
:javascript $(function() { alert("js inside haml"); }
你可以把它放到局部,然后只渲染局部以保持你的视图干净。
参考它
如果您只想引用javascript并让浏览器将其拉入,则应始终使用javascript_include_tag
。 在这里,您需要将javascript文件设为清单,而不是将其放入application.js
清单中。 根据http://guides.rubyonrails.org/asset_pipeline.html ,请记住在application.rb中将清单添加到config.assets.precompile
中。
(在你的haml中):
= javascript_include_tag 'somefile'
(在config / application.rb中):
config.assets.precompile += ['somefile.js']
如果你的javascript很小并且很简单,我建议你直接在HAML中包含javascript:
:javascript alert('hi hi!')
否则你应该使用资产管道。 它确保您的javascripts经过预处理,压缩和缩小 。 它还有助于保持javascripts组织良好(例如,脚本和供应商脚本之间的分离)和易于测试(使用jasmine / jasminerice / evergreen等测试框架)。 如果您是资产管道的新手, 这里有一个很好的读取=)