Rails 使用助手显示 Bootstrap 警报
Rails Display Bootstrap Alerts Using Helpers
我正在尝试按照此 Gist 显示 Bootstrap crud rails 应用程序 https://gist.github.com/suryart/7418454 的警报。其中内容有代码:
application_helper.rb:
模块ApplicationHelper
def bootstrap_class_for flash_type
{ success: "alert-success", error: "alert-danger", alert: "alert-warning", notice: "alert-info" }[flash_type] || flash_type.to_s
end
def flash_messages(opts = {})
flash.each do |msg_type, message|
concat(content_tag(:div, message, class: "alert #{bootstrap_class_for(msg_type)} fade in") do
concat content_tag(:button, 'x', class: "close", data: { dismiss: 'alert' })
concat message
end)
end
nil
end
application.html.erb
<body>
<div class="container">
<%= flash_messages %>
<%= yield %>
</div><!-- /container -->
</body>
问题是我没有看到显示的任何消息。
我想也许因为要点向 return nil 显示,也许我需要 return .each 迭代器的内容所以我在我的助手中做了类似的事情 return html:
def flash_messages
@flash_msg = ""
flash.each do |msg_type, message|
@flash_msg = concat(content_tag(:div, message, class: "alert #{bootstrap_class_for(msg_type)} fade in") do
concat content_tag(:button, 'x', class: "close", data: { dismiss: 'alert' })
concat message
end)
puts "@flash_msg: #{@flash_msg}"
end
@flash_msg
end
但是当你查看 print 语句的输出时,它向我显示了页面的输入 HTML,其结尾实际上是我需要的 html:
<div class="alert alert-info fade in"><button class="close" data-dismiss="alert">x</button>Signed in successfully.</div>
如何让它工作,以便它只显示最后一部分而不是整个页面?return?
您应该使用 non-output 代码块:<% flash_messages %>
(不是 <%=
)以及要点的原始代码。
concat 负责在模板上下文中注入 html 标记,助手的 return 值没有意义。
我正在尝试按照此 Gist 显示 Bootstrap crud rails 应用程序 https://gist.github.com/suryart/7418454 的警报。其中内容有代码:
application_helper.rb:
模块ApplicationHelper
def bootstrap_class_for flash_type
{ success: "alert-success", error: "alert-danger", alert: "alert-warning", notice: "alert-info" }[flash_type] || flash_type.to_s
end
def flash_messages(opts = {})
flash.each do |msg_type, message|
concat(content_tag(:div, message, class: "alert #{bootstrap_class_for(msg_type)} fade in") do
concat content_tag(:button, 'x', class: "close", data: { dismiss: 'alert' })
concat message
end)
end
nil
end
application.html.erb
<body>
<div class="container">
<%= flash_messages %>
<%= yield %>
</div><!-- /container -->
</body>
问题是我没有看到显示的任何消息。
我想也许因为要点向 return nil 显示,也许我需要 return .each 迭代器的内容所以我在我的助手中做了类似的事情 return html:
def flash_messages
@flash_msg = ""
flash.each do |msg_type, message|
@flash_msg = concat(content_tag(:div, message, class: "alert #{bootstrap_class_for(msg_type)} fade in") do
concat content_tag(:button, 'x', class: "close", data: { dismiss: 'alert' })
concat message
end)
puts "@flash_msg: #{@flash_msg}"
end
@flash_msg
end
但是当你查看 print 语句的输出时,它向我显示了页面的输入 HTML,其结尾实际上是我需要的 html:
<div class="alert alert-info fade in"><button class="close" data-dismiss="alert">x</button>Signed in successfully.</div>
如何让它工作,以便它只显示最后一部分而不是整个页面?return?
您应该使用 non-output 代码块:<% flash_messages %>
(不是 <%=
)以及要点的原始代码。
concat 负责在模板上下文中注入 html 标记,助手的 return 值没有意义。