不在我的rails应用中更新属性

时间:2016-04-20 13:29:24

标签: ruby-on-rails ruby

我使用Ruby on Rails创建了一个Web应用程序,但现在我遇到了一个更新后问题,我试图解决this this之后的问题。 }。以下是我的代码:

 def update
  @edit = Post.find(params[:post_id])
  params.permit!
  if @edit.update_attributes(params[:post])
      redirect_to home_path
      flash[:notice] = "Your post updated"
  else
     flash[:notice] = "Wrong"
  end
end

当我使用此代码然后显示

  

分配属性时,必须将哈希作为参数传递。

之后

def update
  @edit = Post.find(params[:post_id])
  params.permit!
  if @edit.update_attributes(update_params)
      redirect_to home_path
      flash[:notice] = "Your post updated"
  else
     flash[:notice] = "Wrong"
  end
end

private
def update_params
 params.require(:post).permit(:title, :details, :summery)
end

当我使用它然后显示

  

param丢失或值为空:post

我的实际错误在哪里?

1 个答案:

答案 0 :(得分:0)

导致此错误的表单。这意味着您没有传递嵌套在post内的值。如果您查看params(加注params.inspect),您就会发现post不存在。

如果您使用form_for(或simple_formformtastic),则会为您处理,但如果您使用form_tag或手动创建{{1}的表单或者通过ajax提交数据,你需要添加它。

在ajax中,您可以在提交之前通过序列化数据进行添加 - 在HTML中,您可以这样做:

form_tag