重定向用户时不显示Flash [:error]

时间:2012-01-23 12:19:03

标签: ruby-on-rails ruby

我在Ruby on Rails中实现,当用户填写错误或发生错误时,用户必须返回上一页,并显示正确的错误消息。我试着这样做:

redirect_to 'javascript:history.go(-1)', flash.now[:error] =>"Something went wrong"

现在,这可以追溯到上一页,但这没有闪存错误?有人知道如何解决这个问题吗?

提前致谢!

编辑:我试过了:

 redirect_to 'match', :notice => 'Something went wrong'

匹配是上一页,但现在我的浏览器出错:

No data received
Unable to load the webpage because the server sent no data.

3 个答案:

答案 0 :(得分:3)

你不能用这种方式混合Javascript和Ruby。您的Javascript调用不会进行任何侧服务器操作,因此您的ruby代码永远不会执行。

Ruby on Rails的

default error handling非常方便,如果可以的话,最好使用它。

如果你真的不能使用它,你必须在这个问题上选择Ruby和Javascript。推荐的方法是Ruby方式:

redirect_to user_path(@user), :notice =>"The user was successfully created"

请参阅Ryan的this post了解更多详情。我不确定这是否可以在Javascript中使用,因为您必须将错误信息传递给上一页而不重新加载它。

答案 1 :(得分:2)

使用:

redirect_to :back, :flash => {:error => "Error"}

答案 2 :(得分:1)

flash.now在同一渲染序列中触发闪光。重定向后,您处于新呈现的页面上,因此您不应使用flash.now,而是使用

redirect_to :back, error: 'Something went wrong'