我正在使用Rails 4和Chrome。以下结果如下:
为什么第1步的验证错误会弹出,以及如何解决此问题?注意:Turbolinks正在使用中,这可能是原因吗?
这是复制的方式:
rails g scaffold Page name:string
class Page < ActiveRecord::Base
validates :name, presence: true
end
Navigate to /pages/new Submit (errors appear on the form) Fillout the name Submit again (redirected to successfully created model) Hit the browser back button (the validation errors are there, and the field is filled with the last supplied value)
答案 0 :(得分:1)
我猜您使用类似以下代码的内容来发送与正在创建/更新的记录相关的错误:
def update
@post = Post.find(params[:id])
if @post.update_attributes(post_params)
# your logic when successfull
else
render :edit, flash[:errors] = @post.errors
end
end
或类似的东西。我的观点是,您应该使用以下语法来设置flash
中的错误:
flash.now[:errors] = @post.errors
(1)这应设置flash[:errors]
仅适用于当前页面,并在您离开此页面后立即将其删除。
(2)您还可以在视图结尾处使用flash.clear
,但这不是应该如何完成的,而且看起来有点“hacky”。
资源:
flash
flash.clear
method