在rails更新操作中,新列仅在第二次尝试时更新

时间:2016-04-22 05:29:50

标签: ruby-on-rails activerecord

我的rails应用程序中有一个帖子表,包含标题和正文字段。

我在浏览器中创建了一些帖子,添加了标题和正文。

现在我将一个作者列添加到帖子表中:

> rails g migration AddAuthorToPosts author:string

修改表单以添加作者字段:

<%= f.label :author %>
<%= f.text_field :author %>

并将该属性添加到控制器中的strong_params:

def post_params
  params.require(:post).permit(:title, :body, :author)
end

当我现在编辑现有帖子时,我发现作者字段确实显示在表单中,但第一次没有保存。当我重复编辑同一篇文章并再次更改作者字段时,它会被保存

控制器中的更新方法是问题所在:

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

if @post.update(post_params)
  flash[:notice] = "Success!" 
  redirect_to @post
  return
else
  render 'edit'
end

我希望在第一次更新现有帖子时进行编辑。

我意识到我需要在控制器更新操作中执行其他操作而不是@ post.update(post_params),但不确定是什么。

0 个答案:

没有答案