Rails / Bootstrap / HAML – 如何转换此代码以显示闪存消息到HAML?
我想将以下代码转换为HAML,以处理Rails 4.2.2应用程序中的Bootstrap警报消息。 我试过手动,使用html2haml和在线转换器,我得到的代码永远不会工作。
代码:
<div class="alert alert-dismissible" role="alert">
我想将以下代码转换为HAML,以处理Rails 4.2.2应用程序中的Bootstrap警报消息。 我试过手动,使用html2haml和在线转换器,我得到的代码永远不会工作。
代码:
<div class="alert alert-dismissible" role="alert">
这是我从转换器得到的:
.alert.case.when.:validation_errors.when.:todo.when.:success.else.end.alert-dismissible{:class => " type.to_sym :alert, :danger, :error, 'alert-danger' :warning, 'alert-warning' :notice, 'alert-success' 'alert-info' ", :role => "alert"} %button.close{"data-dismiss" => "alert", :type => "button"} %span{"aria-hidden" => "true"} × %span.sr-only Close = content
我知道它很丑,但它是我发现的唯一一个与Bootstrap 3.5.5开箱即用的代码。 如果有人对使用HAML的新代码有建议,我愿意听。
如果你想将多行Ruby代码放在HTML元素的属性中,HAML并不是很好。 无论如何,这被认为是一种不好的做法,因为它使你的视图变得复杂,所以我宁愿使用帮助器来简化视图。 例如,您可以创建一个helpers/alert_helper.rb
文件。
助手/ alert_helper.rb
module AlertHelper def build_alert_classes(alert_type) classes = 'alert alert-dismissable ' case alert_type.to_sym when :alert, :danger, :error, :validation_errors classes += 'alert-danger' when :warning, :todo classes += 'alert-warning' when :notice, :success classes += 'alert-success' else classes += 'alert-info' end end end
那么在你看来,它会变成这样:
视图
%div{ class: build_alert_classes(type), role: "alert" } %button.close{ type: "button", "data-dismiss" => "alert" } %span{ "aria-hidden" => true } × %span.sr-only Close = content