我认为每次你做flash[:notice]="Message"
它会将它添加到数组中,然后在视图中显示,但以下只保留最后一个闪存:
flash[:notice] = "Message 1" flash[:notice] = "Message 2"
现在我意识到它只是一个带键的简单哈希(我认为:))但是有更好的方法来执行多次闪烁而不是以下:
flash[:notice] = "Message 1
" flash[:notice] << "Message 2"
Victor Savki.. 55
我通常会将这些方法添加到我的ApplicationHelper中:
def flash_message(type, text) flash[type] ||= [] flash[type] << text end
和
def render_flash rendered = [] flash.each do |type, messages| messages.each do |m| rendered << render(:partial => 'partials/flash', :locals => {:type => type, :message => m}) unless m.blank? end end rendered.join('
') end
之后很容易使用它们:
你可以这样写:
flash_message :notice, 'text1' flash_message :notice, 'text2' flash_message :error, 'text3'
在你的控制器中.
只需将此行添加到您的布局:
<%= render_flash %>
一个很好的答案.但是,存在两个问题:`flash.now`方法以及在`redirect_to`调用中将flash消息作为额外参数的可能性.第一个可以通过给`flash_message`方法提供第三个(可能是可选的)布尔参数来处理; 如果给出`true`作为其值,则该方法应该使用`flash.now`数组而不是`flash`.(对空数组的一次初始化就足够了.)第二个问题只需要在调用`redirect_to`之前在单独的行上设置flash消息而不是使用extra参数. (3认同)
mipadi.. 44
该flash
消息可以真的是你想要的任何东西,所以你可以做这样的事情:
flash[:notice] = ["Message 1"] flash[:notice] << "Message 2"
然后在您的视图中,将其输出为
<%= flash[:notice].join("
") %>
或者你喜欢什么.
这种技术是否比其他解决方案更容易,取决于您自己的偏好.
我通常会将这些方法添加到我的ApplicationHelper中:
def flash_message(type, text) flash[type] ||= [] flash[type] << text end
和
def render_flash rendered = [] flash.each do |type, messages| messages.each do |m| rendered << render(:partial => 'partials/flash', :locals => {:type => type, :message => m}) unless m.blank? end end rendered.join('
') end
之后很容易使用它们:
你可以这样写:
flash_message :notice, 'text1' flash_message :notice, 'text2' flash_message :error, 'text3'
在你的控制器中.
只需将此行添加到您的布局:
<%= render_flash %>
该flash
消息可以真的是你想要的任何东西,所以你可以做这样的事情:
flash[:notice] = ["Message 1"] flash[:notice] << "Message 2"
然后在您的视图中,将其输出为
<%= flash[:notice].join("
") %>
或者你喜欢什么.
这种技术是否比其他解决方案更容易,取决于您自己的偏好.