【问题标题】:Getting parameters to be retained on updating in Rails获取要在 Rails 中更新时保留的参数
【发布时间】:2012-02-13 20:08:03
【问题描述】:

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

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

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

但是,在更新操作中,post 实例变量如下所示:

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

因此,输入到表单中的更改,传递到参数中的更改不会在表单上重新呈现。我是否正确地描述了这一点,如果是这样,有没有办法在验证失败时让更改与表单一起呈现?或者,也许只有那些没有通过验证的更改?

【问题讨论】:

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

标签: ruby-on-rails forms actioncontroller


【解决方案1】:

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

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

if @post.update_attributes(params[:post])
  redirect_to post_path(@post)
else
  render :new
end

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

【讨论】:

    猜你喜欢
    • 2016-08-14
    • 2012-06-19
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多