我确信这是我没有看到的小东西,但是当我试图通过表单更新信息时,我得到了错误的参数数量(1 for 2),在rails 4中。
这是我的控制器动作:
def update
@lion = Lion.find(params[:id])
@lion = Lion.update(lion_params)
redirect_to lion(@lion)
end
这里是该控制器的私有方法中的lion_params
def lion_params
params.require(:lion).permit(:name, :about, :weight, :health, :health_notes, :photo_url, :trainer_id)
end
所有的信息都在表单中,所以我不太确定这个错误是从哪里来的。
您想在@lion
上使用update_attributes
,而不是' update:
# The bang `!` is used to raise in case of validation errors
@lion.update_attributes!(lion_params)
查看这篇文章,它解释了update, update_all, update_attribute, update_attributes之间的所有差异
还要确保您的最后一行是redirect_to lion_url(@lion)
(lion()
不存在),使用_url
方法很重要,因为它遵循HTTP规范