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