Ruby on rails 在Rails中,flash消息如何在请求之间保持?

Ruby on rails 在Rails中,flash消息如何在请求之间保持?,ruby-on-rails,Ruby On Rails,我下面的一个教程中有下面提到的代码,它不太正确,因为错误闪存会比预期的时间长一个请求,因为render不算作请求。解决方法是使用flash。现在改用 但是,错误闪存怎么可能保留一个额外的请求呢?考虑到Rails是无状态的,如何存储闪存信息以供下一个请求使用 class SessionsController < ApplicationController def new end def create user = User.find_by_email(params[:

我下面的一个教程中有下面提到的代码,它不太正确,因为错误闪存会比预期的时间长一个请求,因为
render
不算作请求。解决方法是使用
flash。现在改用

但是,错误闪存怎么可能保留一个额外的请求呢?考虑到Rails是无状态的,如何存储闪存信息以供下一个请求使用

class SessionsController < ApplicationController

  def new
  end

  def create
    user = User.find_by_email(params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      # Sign the user in and redirect to the user's show page.
    else
      flash[:error] = 'Invalid email/password combination' # Not quite right!
      render 'new'
    end
  end

  def destroy
  end
end
class sessioncontroller
闪存存储在用户的存储库中,在后续使用HTTP cookie的请求中与用户的存储库关联。闪存只是会话的一部分,其数据在下一个请求时自动刷新。有关详细信息,请参阅。

使用
flash。现在使用
而不是
flash

flash变量打算在重定向之前使用,并且对于一个请求,它会在结果页面上保持不变。这意味着,如果我们不重定向,而只是呈现一个页面,flash消息将持续两个请求:它出现在呈现的页面上,但仍在等待重定向(即第二个请求),因此,如果单击链接,消息将再次出现

为了避免这种奇怪的行为,在渲染而不是重定向时,我们使用flash.now而不是flash