Подтвердить что ты не робот

Как импортировать Javascript файл в представление Haml?

Я хочу включить некоторые функции Javascript в представление Haml, но я не хочу, чтобы он вставлялся в каждое представление. Должен ли я помещать Javascript файл в общедоступные /javascripts или я могу поместить его в app/assets/javascripts, чтобы он был скрыт от пользователя и все еще ссылался в файле вида haml?

Как бы вы сделали оба эти варианта, если они возможны?

4b9b3361

Ответ 1

Вы должны просто использовать

!!!
%html
  %head
    = javascript_include_tag "my_js_file"

если он определен для одного места, вы должны использовать content_for

!!!
%html
  %head
    = yield(:javascripts)

И затем в вашем представлении

- content_for :javascripts do
  = javascript_include_tag "my_js_file"

Ответ 2

Включить напрямую

Если вы хотите, чтобы javascript включался непосредственно в haml, вы можете использовать :javascript

:javascript
  $(function() { alert("js inside haml"); }

Вы можете поместить это в частичное, а затем просто сделать частичным, чтобы ваши взгляды были чистыми.

Ссылка

Если вы хотите просто ссылаться на javascript и заставить браузер втянуть его, вы должны использовать javascript_include_tag, как всегда. Здесь вам нужно сделать файл javascript манифестом, а не требовать его в манифесте application.js. Не забудьте добавить манифест в config.assets.precompile в ваш application.rb, в соответствии с http://guides.rubyonrails.org/asset_pipeline.html

(в вашем haml):

= javascript_include_tag 'somefile'

(в config/application.rb):

config.assets.precompile += ['somefile.js']

Ответ 3

Если ваш javascript небольшой и простой, я бы предложил включить javascript непосредственно в HAML:

:javascript
  alert('hi hi!')

В противном случае вы должны использовать конвейер активов. Это гарантирует, что ваши javascripts предварительно обработаны, сжаты и уменьшены. Это также помогает держать ваши javascripts хорошо организованными (например, разделение между вашими сценариями и сценариями поставщиков) и легко проверяемым (с такими фреймворками тестирования, как jasmine/jasminerice/evergreen). Если вы новичок в конвейере активов, здесь является хорошим read =)