Javascript 使用Rails显示JS模态的问题

Javascript 使用Rails显示JS模态的问题,javascript,jquery,ruby-on-rails,materialize,Javascript,Jquery,Ruby On Rails,Materialize,我正在尝试对Rails flash消息使用modals,以输出:通知或:错误。我只想在页面更改时显示它们,但我只能在加载文档时让它们工作。但它总是处于活动状态 在application.html.erb中,我使用: <% flash.each do |name, msg| %> <% if msg.is_a?(String) %> <div id="modal1" class="modal"> <div c

我正在尝试对Rails flash消息使用modals,以输出:通知或:错误。我只想在页面更改时显示它们,但我只能在加载文档时让它们工作。但它总是处于活动状态

在application.html.erb中,我使用:

<% flash.each do |name, msg| %>
    <% if msg.is_a?(String) %>
        <div id="modal1" class="modal">
            <div class="modal-content">
                <p><%= msg %></p>
            </div>
            <div class="modal-footer">
                <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
            </div>
        </div>
    <% end %>
<% end %>
我试着检查字符串是否也不是null,或者长度是否大于零,但这不会改变任何事情。除非我使用:

var ready;
ready = function() {
    $('#modal1').openModal();
}
$(document).ready(ready);
$(document).on('page:load', ready);
它可以工作,但每次重新加载页面时都会显示,无论是否显示flash消息,我不希望出现这种行为。当我更改为
$(文档).on('page:change',ready)时单击模式关闭按钮后,窗口保持黑暗

如果有帮助的话,我会使用物化ECS

为什么这些支票不起作用?我尝试了不同的if语句和检查,但都没有显示模态。任何帮助都将不胜感激

亲切的问候

对于那些想知道它是如何工作的人。1)js代码中有一个错误,2)我必须为if-then使用不同的逻辑

var ready;
ready = function() {
var modal1 = document.getElementById('modal1');
if (modal1 !== null) {
    $('#modal1').openModal();
}
};
$(document).ready(ready);
$(document).on('page:load', ready);

此行包含错误:
var modal1=document.getElementById('#modal1')
您需要删除
#
,如下所示:
var modal1=document.getElementById('modal1')。我不知道你为什么在那里使用原始JavaScript,当你在其他地方使用jQuery时……谢谢@dwenzel。我纠正了错误,也更改了if逻辑。因为
length>0
不起作用,因为变量导致
[object htmldevelment]
我选择了
modal1!==空
。通过这种方式,一切都能正常工作。我将原始js与jquery混合的原因很简单。我在这个主题上的知识还不够广泛,随着我的项目取得成功,我将更好地了解jquery,并可能更好地利用它。:)非常感谢。
var ready;
ready = function() {
var modal1 = document.getElementById('modal1');
if (modal1 !== null) {
    $('#modal1').openModal();
}
};
$(document).ready(ready);
$(document).on('page:load', ready);