Доступ к webpacker js in. js .erb просмотров - PullRequest
0 голосов
/ 09 марта 2020

В настоящее время я пытаюсь переключиться с конвейера ресурсов на веб-упаковщик и пытаюсь выяснить, как получить доступ к упакованному javascript из. js .erb представлений.

Все мои формы выглядят так:

<% form_for ..., remote: true do %>

И все мои контроллеры реагируют так:

def create
  respond_to do |format|
    format.js
  end
end

Но внутри шаблонов .js.erb (create.js.erb) для приведенного выше примера), у меня нет доступа к чему-либо из app/javascript/packs/application.js, как я сделал, когда я использовал конвейер активов.

Если мой create.js.erb выглядит так:

$('form').prepend("<%=j form_errors(object) %>")

Я получаю ошибку Uncaught ReferenceError: $ is not defined, потому что он не может получить доступ к jQuery.

Вот мой файл среды веб-пакета:

# config/webpack/environment.js

const { environment } = require('@rails/webpacker')
const coffee = require('./loaders/coffee')

const webpack = require('webpack');
environment.plugins.append('Provide', new webpack.ProvidePlugin({
  $: 'jquery',
  jQuery: 'jquery',
}));

environment.loaders.prepend('coffee', coffee)
module.exports = environment

Любые идеи, как получить доступ к веб-упаковке js в. js .erb шаблонах.

1 Ответ

0 голосов
/ 10 марта 2020

Добавьте эти строки в application.js и попробуйте: -

// application.js

require("@rails/ujs").start()
require("turbolinks").start()

require("@rails/activestorage").start()
require("channels")
require("jquery")

window.jQuery = $;           // Add this line
window.$ = $;                // Add this line
...