ruby-on-rails - Rails/Bootstrap/HAML - 如何将此代码转换为 HAML 显示 Flash 消息?

标签 ruby-on-rails twitter-bootstrap haml

我想将以下代码转换为 HAML,以处理 Rails 4.2.2 应用程序中 Bootstrap 的警报消息。我已经手动尝试过,使用 html2haml 和在线转换器,但我得到的代码从来没有工作过。

代码:

<div class="alert 
    <%= 
    case type.to_sym 
    when :alert, :danger, :error, :validation_errors
        'alert-danger'
    when :warning, :todo
        'alert-warning'
    when :notice, :success
        'alert-success'
    else 
    'alert-info'
    end
    %>
     alert-dismissible" role="alert">
    <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
    <%= content %>
</div>

这是我从转换器那里得到的:

.alert.case.when.:validation_errors.when.:todo.when.:success.else.end.alert-dismissible{:class => "<haml_loud> type.to_sym :alert, :danger, :error, 'alert-danger' :warning, 'alert-warning' :notice, 'alert-success' 'alert-info' </haml_loud>", :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 并不是很好。无论如何,这被认为是一种不好的做法,因为它使您的 View 变得复杂,所以我会使用助手来简化 View 。例如,您可以创建一个 helpers/alert_helper.rb 文件。

helpers/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 } &times;
    %span.sr-only Close
  = content

关于ruby-on-rails - Rails/Bootstrap/HAML - 如何将此代码转换为 HAML 显示 Flash 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31094771/

相关文章:

ruby-on-rails - 在 Rails 中,如何在不通过数据库的情况下检索belongs_to 关联上的对象?

javascript - Bootstrap 4 响应式菜单 - 在折叠时添加元素

jquery - 如何将垂直菜单与按钮图标和子类别结合起来

haml - 将一个目录中的所有 .haml 文件转换为另一个目录中的 .html

html - 使用 HAML/SASS/CSS 框架制作静态网站的库

ruby-on-rails - 有没有办法强制 Rails 中的测试顺序?

ruby-on-rails - rails 2.3.8 : Validating an object before save shows previous references and not updated ones

ruby-on-rails - 如何编写rails路由以在路径中使用主要和次要版本映射版本化API,例如/api/v1.2/users/1234

javascript - Bootstrap 4 - 移动网站太宽。横向滚动发生。可能的语法错误?

css - 在CSS中更改按钮样式