Rails的flash:notice无法正常工作

5

我有这段代码:

def create
  login(params[:email], params[:password])

  if current_user
    flash[:notice] = "Welcome back #{current_user.email}"
    return redirect_to_first_page
  else
    flash[:notice] = "Email or password is wrong. Try again !"
    redirect_to root_url
  end
end

当登录成功时,设置flash并重定向到第一页。这部分是正常工作的。第二部分没有设置flash通知消息。然后当页面显示时,没有来自flash的消息。我尝试使用了不同的方式,但仍然无法解决问题。

return redirect_to root_url

但是仍然没有显示任何内容。在我的控制器中,我有一个名为flash_notice的帮助程序,它只返回flash[:notice]。这是因为flash在视图中始终为空,但在控制器中可以访问。在视图中,我只有一行:

<%= flash_notice %>

我正在使用Rails 3.1


redirect_to root_url, :notice => "Email or password is wrong. Try again !" 工作吗? - Zabba
使用 notice 代替 flash_notice - Hock
@hock,flash_notice是由OP定义的控制器上的一个方法。 - Zabba
也许是因为其他重定向不经意地发生了?也许尝试直接在视图中使用 flash[:notice]?尝试在相关控制器和视图的各个阶段打印出 flash - Zabba
我无法在视图中使用flash[:notice],因为在局部视图中它是nil。我尝试了<%= "flash is nil" if flash == nil %>,结果为真。唯一可行的方法是在基础控制器中创建一个帮助方法(例如flash_notice),该方法返回flash[:notice]。 - Mihai
1个回答

7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接