【发布时间】:2016-08-12 14:11:52
【问题描述】:
我的 Ruby on Rails 版本是 4.2.3,这是 application_helper.rb 中的一个助手,它假设在 views/layouts/application.html.haml 中打印 flash 通知
def flash_message key, message, dismissible
dismiss = dismissible ? " alert-dismissible" : ""
content_tag :div, class: flash_class(key.to_sym) + dismiss do
if dismissible
content_tag(:button, {type: "button", class: "close", "data-dismiss" => "alert", "aria-label" => "Close"}) do
content_tag :span, {"aria-hidden" => "true"} do
"×"
end
end
end
content_tag :span, class: "glyphicon glyphicon-ok"
message
end
end
关于视图/布局/application.html.haml
- if flash.any?
- flash.each do |key, message|
= flash_message key, message, true
它不显示所有内容,它只显示第一个带有类的 div 和消息,这很好,但如果 flash 消息可关闭并且带有 glyphicon 类的 span,我仍然需要关闭按钮。
<div class="alert alert-success alert-dismissible">message</div>
谢谢!
【问题讨论】:
-
传入参数是
dismissible,但您正在测试dismissable -
对不起@SteveTurczyn 这只是一个错字我已修复但问题仍然存在,由于某种原因 content_tag 仅适用于 div 元素。
-
在您的 content_tag 块中,您需要将所有部分连接成一个字符串。现在只返回
message。所有其他部分都被简单地忽略了。 -
感谢@SergioTulentsev 它只需要 .html_safe 方法,因此它不会在页面上打印 HTML 代码
标签: ruby-on-rails-4 twitter-bootstrap-3 haml