Как потребовать пользовательские файлы JS в Rails 6

В настоящее время я пробую Rails 6.0.0.rc1, который, похоже, переместил папку javascript по умолчанию из app/assets/javascript в app/javascript. Файл application.js теперь находится в app/javascript/packs. Теперь я хочу добавить пару js-файлов, но по какой-то причине они не импортируются, и я не могу найти документацию о том, как это можно сделать в Rails 6. Я попробовал несколько вещей:

  1. Создайте новую папку custom_js под app/javascript/packs, поместив туда все мои файлы js, а затем добавьте require "custom_js" к application.js.

  2. Скопируйте все мои файлы js под app/javascript/channels (которые должны быть включены по умолчанию, так как application.js имеет require("channels")).

  3. Добавление require_tree . к application.js, что было предыдущим подходом.

Как я могу загрузить свои собственные файлы js в приложение Rails 6?


person Severin    schedule 21.05.2019    source источник
comment
webpacker заменяет конвейер активов в rails 6. я бы посоветовал перейти на webpacker перед обновлением до rails 6.   -  person phoet    schedule 21.05.2019


Ответы (3)


Получите лучше организованный код и избегайте нескольких тегов javascript_pack_tags в файле application.html.erb с помощью этого подхода:

  1. Добавьте свой собственный example.js файл javascript в app/javascript/packs.
  2. Добавьте require("packs/example") в свой файл application.js.

Я хотел бы добавить комментарий к правильному ответу Асима Хашми. Но у меня недостаточно репутации, поэтому вместо этого я добавлю свое предложение в качестве ответа.

Нет необходимости включать расширение «.js» внутри требования.

person Oliver Curting    schedule 10.06.2019
comment
Как указать файл js для каждого действия контроллера? - person truongnm; 29.08.2019
comment
Например: пользователь/index.js, пользователь/show.js, пользователь/form.js - person truongnm; 29.08.2019
comment
Есть ли способ избежать добавления всех файлов по имени? Нравится вся папка? - person baash05; 19.06.2021

Вам необходимо выполнить следующие шаги, чтобы добавить собственный файл javascript в rails 6 (webpacker)

1. Создайте свой собственный файл с именем custom.js в каталоге app/javascript/packs.

В целях тестирования напишите в нем любое console.log.

// app/javascript/packs/custom.js

console.log("custom js file loaded")

2. Перейдите к своему application.html.erb и добавьте следующую строку в конце вашего <head></head>

<%= javascript_pack_tag 'custom', 'data-turbolinks-track': 'reload' %>

3. Теперь выполните rake assets:precompile Это упакует ваш код javascript (включая наш пользовательский файл, который мы только что добавили)

Теперь перезагрузите страницу, и вы должны увидеть сообщение

custom js file loaded

в консоли вашего браузера

Надеюсь, поможет :)

person asimhashmi    schedule 21.05.2019
comment
Большое спасибо. Как раз та информация, которую я искал. - person Severin; 22.05.2019
comment
Это лучший ответ. - person Jin Lim; 11.11.2019
comment
Это нежелательная практика... - person svelandiag; 19.04.2021

В моем пользовательском js есть функции, которые будут вызываться встроенным javascript серверных html-страниц. Следующий фрагмент работает в Rails6, скомпилированный webpacker:

  1. поместите пользовательский файл js в папку app/javascript/packs, например. приложение/javascript/пакеты/my_functions.js

say_hello = function(a_text){ 
    console.log("HELLO "+ a_text);  
}

  1. добавьте javascript_pack_tag в html-файл, например index.html.erb .

<%= javascript_pack_tag 'my_functions' %>
<!-- html here -->

<script>
$(document).ready(function(){
    say_hello('ABer')
});
</script>

Примечание. Эта строка находится внутри тела html, а не в голове.

<script src="/packs/js/my_functions-1db66368ebbd2fe31abd.js"></script>

person carrottop    schedule 10.09.2020