如何将Javascript文件导入Haml视图?

Lei*_*mon 15 ruby-on-rails ruby-on-rails-3

我想在Haml视图中包含一些Javascript功能,但我不希望它插入到每个视图中.我是否必须将Javascript文件放在public/javascripts中,或者我可以将它放在app/assets/javascripts中以使其对用户隐藏,并仍然在haml视图文件中引用?

如果可能的话,你会如何做这两个选择?

Dra*_*ken 30

你应该使用

!!!
%html
  %head
    = javascript_include_tag "my_js_file"
Run Code Online (Sandbox Code Playgroud)

如果它特定于一个地方,你应该使用 content_for

!!!
%html
  %head
    = yield(:javascripts)
Run Code Online (Sandbox Code Playgroud)

然后在你看来

- content_for :javascripts do
  = javascript_include_tag "my_js_file"
Run Code Online (Sandbox Code Playgroud)


Ben*_*aum 10

包括直接

如果你想将javascript直接包含在haml中,你可以使用 :javascript

:javascript
  $(function() { alert("js inside haml"); }
Run Code Online (Sandbox Code Playgroud)

你可以把它放到局部,然后只渲染局部以保持你的视图干净.

参考它

如果你只想引用javascript并让浏览器将其拉入,你应该javascript_include_tag像使用一样.在这里,您需要将javascript文件设为清单,而不是将其放入application.js清单中.config.assets.precompile根据http://guides.rubyonrails.org/asset_pipeline.html,请记住在您的application.rb中添加清单.

(在你的haml中):

= javascript_include_tag 'somefile'
Run Code Online (Sandbox Code Playgroud)

(在config/application.rb中):

config.assets.precompile += ['somefile.js']
Run Code Online (Sandbox Code Playgroud)