【问题标题】:Rails - customizing the flash message for specific use caseRails - 为特定用例定制 Flash 消息
【发布时间】:2020-09-08 01:40:56
【问题描述】:

我对 ruby​​ on rails 完全陌生。请帮助我解决以下用例。

默认情况下,在 application.html.erb 中将 flash 消息配置为超时并在几秒钟内淡出

<div id="message" class="modal alert alert-error fade clear" data-alert="alert">
    <%= flash[:notice] %>  
</div> 

设置 flash 超时时间的 Javascript 代码:

 var showFlashMsg = function(){
<%if flash[:notice].nil?%>
    return false;
<%else%>
    return true;    
<%end%>}



if(showFlashMsg()){
    window.setTimeout(function () {
        showMsg();
    }, 100);

    window.setTimeout(function () {
        closeMsg();
    }, 500);
  }   

showMsg() 和 closeMsg() 包含 #message.show() 和 #message.hide() 函数。

但我试图通过使特定的闪光警报消息用户可关闭(即,将关闭按钮添加到闪光警报)来覆盖上述行为。 - 以防在我提交特定表单时触发闪光消息.

所以在这种情况下,我需要通过添加关闭按钮并删除这些闪存的 closeMsg() 超时来覆盖为闪存设置的默认行为。除了显示表单提交响应的 flash 消息外,所有其他由 同一控制器和同一操作触发的 flash 消息都应遵循上述在几秒钟内淡出的行为。

请给我一些关于如何使用 javascript 和 rails 为特定的表单提交响应自定义 flash 消息的建议?

提前致谢!!!

【问题讨论】:

标签: javascript jquery ruby-on-rails


【解决方案1】:

我将第一段代码改写为:

 var showFlashMsg = <%= !flash[:notice].nil? %>

然后假设您知道您在通知中要查找的字符串:

<% special_string = "This is the special flash notice" %>
var showFlashMsg = <%= !flash[:notice].nil? %>
var setTimeout = <%= flash[:notice] && flash[:notice] != special_string %>

if(showFlashMsg){
  window.setTimeout(function () {
    showMsg();
  }, 100)
}
if (setTimeout){
  window.setTimeout(function () {
    closeMsg();
  }, 500);
}

如果flash[:notice] 不为零,这会将showFlashMsg 设置为true,如果不为零,则将setTimeout 设置为true,并且也不等于特殊字符串。

【讨论】:

  • 感谢您的回复!!。但我有 7 条警报消息的列表。所以根据表单提交状态,告警信息会有所不同。此外,所有这 7 条警报消息均以不同的语言本地化。我将从控制器获得本地化的闪存消息。所以在这种情况下,我无法预先确定字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 2018-04-05
相关资源
最近更新 更多