我在Rails 5应用中使用Gritter通知,无法找到删除通知弹出窗口的默认标题的方法。我在下面添加Gritter:
<%= js add_gritter(flash[:notice], title: 'I dont need you', sticky: false) %>
尝试:
<%= js add_gritter(flash[:notice], title: false, sticky: false) %>
<%= js add_gritter(flash[:notice], title: nil, sticky: false) %>
<%= js add_gritter(flash[:notice], title: '', sticky: false) %>
<%= js add_gritter(flash[:notice], title: ' ', sticky: false) %>
仍显示弹出窗口,默认标题为“通知”。试图在整个应用程序的项目“通知”或“gritter”中搜索,但没有发现任何相关内容。
如何摆脱它?
答案 0 :(得分:1)
听起来不是最好的方式,但有效。如果有任何其他解决方案 - 请随意:)
.gritter-title {
display: none;
}
编辑:
由于我使用SCSS,这样更好:
<%= js add_gritter(flash[:notice], sticky: false, :on_click => remove_gritter, :time => 100000, class_name: 'no-title') %>
.no-title {
.gritter-title {
display: none;
}
}
答案 1 :(得分:1)
gem中的add_gritter
方法将options[:title]
设置为&#34;通知&#34;如果options[:title].blank?
返回true。
&#34;脏&#34;选项是再次定义它,使用选项的散列而不是*args
,并在标题作为选项参数传递时呈现标题,如:
def add_gritter(text, options={})
if %w(success warning error notice progress).include?(options[:image].to_s)
options[:image] = image_path("#{options[:image]}#{options[:image].to_s == 'progress' ? '.gif' : '.png'}")
end
notification = Array.new
notification.push("jQuery(function(){") if options[:nodom_wrap].blank?
notification.push("jQuery.gritter.add({")
notification.push("image:'#{options[:image]}',") if options[:image].present?
notification.push("sticky:#{options[:sticky]},") if options[:sticky].present?
notification.push("time:#{options[:time]},") if options[:time].present?
notification.push("class_name:'#{options[:class_name]}',") if options[:class_name].present?
notification.push("before_open:function(e){#{options[:before_open]}},") if options[:before_open].present?
notification.push("after_open:function(e){#{options[:after_open]}},") if options[:after_open].present?
notification.push("before_close:function(e){#{options[:before_close]}},") if options[:before_close].present?
notification.push("after_close:function(e){#{options[:after_close]}},") if options[:after_close].present?
notification.push("on_click:function(e){#{options[:on_click]}},") if options[:on_click].present?
notification.push("title:'#{escape_javascript(options[:title])}',") if options[:title].blank? # Here
notification.push("text:'#{escape_javascript(text)}'")
notification.push("});")
notification.push("});") if options[:nodom_wrap].blank?
text.present? ? notification.join.html_safe : nil
end
但是gritter.js文件有一个if
来检查title
是否有任何内容,所以你应该自己处理并编辑它,只是为了检查文本,比如:
//We might have some issues if we don't have a title or text!
if (!params.text) {
throw 'You need to fill out the text parameter.';
}