我继承了一个使用Ruby on Rails和HAML的项目,我之前从未见过HAML,所以我有点困惑。这个项目正在使用设计来处理用户并设计发送flash事件或者某些东西,以便在用户登录或用户登录失败以及其他类似事件时通知。我的问题是闪存通知被硬编码为某些类型,我想通过一些自定义将它们绑定到引导警报。我知道我可以编辑设计通知的文本,但我无法更改其类型。我有一个部分文件,用于显示警报。
- if flash[:error]
.alert.alert-error
%button.close{"data-dismiss" => "alert", :type => "button"} ×
= flash[:error].html_safe
- elsif flash[:alert]
.alert.alert-error
%button.close{"data-dismiss" => "alert", :type => "button"} ×
= flash[:alert]
- elsif flash[:notice]
.alert.alert-warning
%button.close{"data-dismiss" => "alert", :type => "button"} ×
= flash[:notice]
- elsif flash[:success]
.alert.alert-success
%button.close{"data-dismiss" => "alert", :type => "button"} ×
= flash[:success]
我想要做的是在设计字符串前加上我希望它们的警报类型。
拿这个
Successful log in!
然后把它变成这个
alert-info|Successful log in!
然后解析alter类型并更改字符串。我不知道是否可以使用辅助方法。
答案 0 :(得分:1)
= flash[:success]
是ERB的<%= flash[:success] %>
了解这一点,您可以使用普通的ruby代码来编写您想要显示的内容。另外,要在HAML中编写简单文本,只需将其放在自己的行上(保持适当的缩进):
- if flash[:success]
.alert.alert-success
%button.close{"data-dismiss" => "alert", :type => "button"} ×
My custom text
= flash[:success]
这将转换为:
<% if flash[:success] %>
<div class="alert alert-success">
<button class="close" data-dismiss="alert" type="button">×</button>
My custom text
<%= flash[:success] %>
</div>
<% end %>
请注意我在上面的两个代码示例中放置了“我的自定义文字”。
有关了解HAML疯狂的其他帮助,请参阅:HAML Documentation和Online HAML Conversion Tool
<强>更新强>
如果您想要解析flash
字符串并根据前缀显示div,请创建一个这样的帮助器:
# application_helper.rb
def display_flash(input_message)
if input_message
# Split the prefix from the actual message
prefix, output_message = input_message.split('|')
# Use HAML's haml_tag to create your div, button, etc.
haml_tag(:div, class: "alert #{prefix}") do
output_message
end
end
end
希望这比以前更接近于解决您的问题。别的我知道了。