Ruby on Rails 和 HAML 中的这段代码有什么问题?

What's wrong with this code in Ruby on Rails and HAML?

我的 Ruby Rails 版本是 4.2.3,这是 application_helper.rb 中的一个助手,它应该在 views/layouts/application 中打印 flash 通知。html.haml

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
                            "&times"
                        end
                    end
                end

                content_tag :span, class: "glyphicon glyphicon-ok"

                message
            end
end

在 views/layouts/application.html.haml

- if flash.any?
            - flash.each do |key, message|
                    = flash_message key, message, true

它不显示所有内容,它只显示第一个 div 和 class 以及很好的消息,但如果闪现消息可以关闭,我仍然需要关闭按钮,并且跨越字形 class.

<div class="alert alert-success alert-dismissible">message</div>

谢谢!

正如 SergioTulentsev 所建议的那样 content_tag 应该连接起来,但是为了让辅助函数正确地解析 HTML 而不是字面意思,消息变量应该跟在 .html_safe 方法之后。

感谢大家的帮助。