Rails 5.0和JQuery .dialog()不起作用

问题描述 投票:0回答:1

我正在将Rails应用程序从4.2升级到5.0。红宝石版本为2.6.4

该应用程序具有一个视图,该视图允许用户单击链接以运行将学生分配到课程/班级的计划脚本。该脚本可能需要几分钟才能运行完成,因此我们显示一个模式对话框,就像进度条一样,显示该进程当前所在的位置。但是在rails 5.0版本中,此操作无效。没有错误,只是没有出现弹出窗口。我认为这是一个JQuery事情,因此使用try / catch块,我发现它在.dialog(...)调用中。但是我不确定为什么会失败。我相信我有正确的JQuery宝石,并且为rails 5.0正确设置了资产/文件。

Gemfile:
source 'http://rubygems.org'

gem 'rails', '~> 5.0'
gem 'jquery-rails'
gem 'jquery-ui-rails'
...
Gemfile.lock:
...
jquery-rails (4.4.0)
  rails-dom-testing (>= 1, < 3)
  railties (>= 4.2.0)
  thor (>= 0.14, < 2.0)
jquery-ui-rails (6.0.1)
  railties (>= 3.2.16)
...
app/assets/application.js:
...
//= require jquery-ui
//= require jquery
//= require jquery_ujs
//= require jquery-ui/widgets/dialog
//= require_tree .
app/assets/stylesheets/application.css
...
*= require_self
 *= require_tree .
 *= require jquery-ui
 *= require jquery-ui/dialog

弹出形式:

app/views/elements/_scheduling_dialog_popup.html.erb:
<%
  # This partial will attach a Jquery event to a submit button that will display a modal-screen 
  # during the (potentially) long scheduling process.
%>
<% content_for :head do %>
  <script type="text/javascript">
  jQuery(document).ready(function() {
    jQuery("a#autoschedule").click(function() {
      JQuery('div#import_modal_box').dialog({bgiframe: true, modal: true, width:450, draggable: false, closeOnEscape: false, resizable: false}); 
    });
  });
  </script>
<% end %>
<div id="import_modal_box" style="display:none;">
  <p style="float:left;margin-right:1em;"><%= image_tag 'ajax-loader.gif' %></p>
  <h3>Auto Class Assignment for <%= pluralize(Student.count,'student') %></h3>
  <p>There are <%= pluralize(ClassTime.sum(:enrollment_limit),'spot') %> available in <%= pluralize(ClassTime.count,'class') %> for <%= pluralize(UpcomingCourse.count,'course')%>.</p><p>This may take a few minutes, please wait.</p>
  <p>&nbsp;</p>
</div>

我已经阅读了位于ruby-docs的文档。我看到我只需要使用//= require jquery-ui来完成所有工作,但是为了确定我添加了//= require jquery-ui/widgets/dialog

要使它正常工作,我缺少什么?

谢谢您的建议。

jquery-ui ruby-on-rails-5 jquery-rails
1个回答
0
投票

我“终于”能够解决此问题。实际上,它实际上与dialog()函数无关。我调出开发人员工具并运行“控制台”选项卡/窗口,看是否有任何错误或警告,发现我有很多ReferenceError: jQuery is not defined ....错误。经过一些搜索后,我发现Rails 5.2不需要jquery_ujs,因此我从//= require jquery_ujs文件中删除了assets/javascripts/application.js行。现在可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.