如何在 Rails 6 的视图中使用 JQueryUI
How to use JQueryUI in views in Rails 6
我在 Rails 6 应用程序中使用 JQuery 和 JQueryUI 时遇到困难。
JQuery 和 JqueryUI 都适用于 application.js
但是,JQueryUI 在视图中不起作用。我如何让它在这两种情况下都起作用?我的代码如下。
我运行yarn add jquery
我运行yarn add jquery-ui-dist
在environment.js:
const { environment } = require('@rails/webpacker')
const webpack = require('webpack')
environment.plugins.prepend('Provide',
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
);
const aliasConfig = { 'jquery': 'jquery/src/jquery', 'jquery-ui': 'jquery-ui-dist/jquery-ui.js' };
environment.config.set('resolve.alias', aliasConfig);
module.exports = environment
在application.js:
require("@rails/ujs").start()
require("@rails/activestorage").start()
require("channels")
require("jquery")
require("jquery-ui");
require("custom/scripts")
我在 custom/scripts.js 和 中测试了 JQuery 和 JQueryUI packs/search.js
custom/scripts.js 加载到 application.js 中,如下所示:
$(document).ready(function(){
var test = $().jquery
console.log('custom/scripts.js JQuery version ==> ' + test);
var test_ui = $.ui ? $.ui.version || "pre 1.6" : 'jQuery-UI not detected';
console.log('custom/scripts.js UI version ==> ' + test_ui);
});
packs/search.js 在视图中加载
<%= javascript_pack_tag "search" %>
packs/search.js 看起来像这样(与 custom/scripts.js 完全相同):
$(document).ready(function(){
var test = $().jquery
console.log('packs/search.js JQuery version ==> ' + test);
var test_ui = $.ui ? $.ui.version || "pre 1.6" : 'jQuery-UI not detected';
console.log('packs/search.js UI version ==> ' + test_ui);
});
控制台中的结果:
custom/scripts.js JQuery version ==> 3.5.1
custom/scripts.js UI version ==> 1.12.1
packs/search.js JQuery version ==> 3.5.1
packs/search.js UI version ==> jQuery-UI not detected
问题可能是 Webpack 解析插件的方式。我已经删除了这一行
$: 'jquery'
在 environment.js
中并且看起来很有效!
我在 Rails 6 应用程序中使用 JQuery 和 JQueryUI 时遇到困难。
JQuery 和 JqueryUI 都适用于 application.js
但是,JQueryUI 在视图中不起作用。我如何让它在这两种情况下都起作用?我的代码如下。
我运行yarn add jquery
我运行yarn add jquery-ui-dist
在environment.js:
const { environment } = require('@rails/webpacker')
const webpack = require('webpack')
environment.plugins.prepend('Provide',
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
);
const aliasConfig = { 'jquery': 'jquery/src/jquery', 'jquery-ui': 'jquery-ui-dist/jquery-ui.js' };
environment.config.set('resolve.alias', aliasConfig);
module.exports = environment
在application.js:
require("@rails/ujs").start()
require("@rails/activestorage").start()
require("channels")
require("jquery")
require("jquery-ui");
require("custom/scripts")
我在 custom/scripts.js 和 中测试了 JQuery 和 JQueryUI packs/search.js
custom/scripts.js 加载到 application.js 中,如下所示:
$(document).ready(function(){
var test = $().jquery
console.log('custom/scripts.js JQuery version ==> ' + test);
var test_ui = $.ui ? $.ui.version || "pre 1.6" : 'jQuery-UI not detected';
console.log('custom/scripts.js UI version ==> ' + test_ui);
});
packs/search.js 在视图中加载
<%= javascript_pack_tag "search" %>
packs/search.js 看起来像这样(与 custom/scripts.js 完全相同):
$(document).ready(function(){
var test = $().jquery
console.log('packs/search.js JQuery version ==> ' + test);
var test_ui = $.ui ? $.ui.version || "pre 1.6" : 'jQuery-UI not detected';
console.log('packs/search.js UI version ==> ' + test_ui);
});
控制台中的结果:
custom/scripts.js JQuery version ==> 3.5.1
custom/scripts.js UI version ==> 1.12.1
packs/search.js JQuery version ==> 3.5.1
packs/search.js UI version ==> jQuery-UI not detected
问题可能是 Webpack 解析插件的方式。我已经删除了这一行
$: 'jquery'
在 environment.js
中并且看起来很有效!