Ruby on rails 在Rails中更新时获取要保留的参数

Ruby on rails 在Rails中更新时获取要保留的参数,ruby-on-rails,forms,actioncontroller,Ruby On Rails,Forms,Actioncontroller,以Post为例,假设Post有2个属性,这两个属性都有验证。在编辑帖子时,假设我更改了2个属性,其中一个属性验证失败,导致页面被重新加载。在我看来,当重新加载页面时,表单中会显示以前保存的帖子属性版本,而不是我刚才输入的属性,尽管我刚才输入的属性在参数中 这将在典型的创建操作中处理,因为后实例变量声明如下所示: @post = Post.new(params[:post]) @post = Post.find(params[:id]) 但是,在更新操作中,后实例变量如下所示: @post =

以Post为例,假设Post有2个属性,这两个属性都有验证。在编辑帖子时,假设我更改了2个属性,其中一个属性验证失败,导致页面被重新加载。在我看来,当重新加载页面时,表单中会显示以前保存的帖子属性版本,而不是我刚才输入的属性,尽管我刚才输入的属性在参数中

这将在典型的创建操作中处理,因为后实例变量声明如下所示:

@post = Post.new(params[:post])
@post = Post.find(params[:id])
但是,在更新操作中,后实例变量如下所示:

@post = Post.new(params[:post])
@post = Post.find(params[:id])

因此,输入表单并传递到参数中的更改不会在表单上重新呈现。我是否正确地描述了这一点,如果是,是否有一种方法可以在验证失败时使用表单呈现更改?或者,可能只有那些没有验证失败的更改?

正如corey所说,您需要在更新时更新属性,以便:

@post=post.find(参数[:id])


您当前没有更新post实例,因此可以查看数据库中的内容。

您的表单是什么样子的,以及您的
更新
操作的其余部分是什么?您应该有一个
@post.update_attributes(params[:post])
,它将用其余的参数更新post实例。