我使用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
我的实际错误在哪里?
答案 0 :(得分:0)
导致此错误的表单。这意味着您没有传递嵌套在post
内的值。如果您查看params
(加注params.inspect
),您就会发现post
不存在。
如果您使用form_for
(或simple_form
或formtastic
),则会为您处理,但如果您使用form_tag
或手动创建{{1}的表单或者通过ajax提交数据,你需要添加它。
在ajax中,您可以在提交之前通过序列化数据进行添加 - 在HTML
中,您可以这样做:
form_tag