【问题标题】:What's wrong with this code in Ruby on Rails and HAML?Ruby on Rails 和 HAML 中的这段代码有什么问题?
【发布时间】: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
                            "&times"
                        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


【解决方案1】:

正如 SergioTulentsev 建议的那样,应该连接 content_tag,但要让辅助函数正确解析 HTML,而不是字面意思,message 变量应该后跟 .html_safe 方法。

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 2015-04-25
    • 2018-09-09
    相关资源
    最近更新 更多