我在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.
答案 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'