当我更新时会出现此错误,我不知道为什么会出现此错误
def update1
@user = User.find(params[:user])
if @user.update_attributes(user_params)
redirect to user_steps_path
else
render 'edit1'
end
end
private
def user_params
params.require(:user).permit(:fname, :lname, :email)
end
end
参数:
{"utf8"=>"✓",
"authenticity_token"=>"wY+llV4qot5xDsxp1JvaltvPdrZND7goaorBTh8Vteo=",
"user"=>"51",
"commit"=>"Update"}
Edit.html.erb
这是我的编辑表格
<%= form_for :user do |f| %>
<div class="form-group">
<%= f.label :First_Name %><br />
<%= f.text_field :fname, :class=> 'form-control' %>
</div>
<div class="form-group">
<%= f.label :Last_Name %><br />
<%= f.text_field :lname, :class=> 'form-control' %>
</div>
<div class="form-group">
<%= f.label :Email_Address %><br />
<%= f.email_field :email, :class=> 'form-control' %>
</div>
<div class="button">
<%= f.submit 'Update' %>
</div>
</div>
<% end %>
请帮我解决这个问题......
答案 0 :(得分:3)
您的代码现在的形式没有意义:
@user = User.find(params[:user])
if @user.update_attributes(user_params)
在第一行中,您假设params [:user]等于id。在第二个中,你假设它是一个属性的散列。
无论如何要解决问题,您需要修改user_params
方法,例如:
def user_params
if params[:user].is_a? String
params[:user]
else
params.require(:user).permit(:fname, :lname, :email)
end
end
或者更改传递ID的方式:
params = {"utf8"=>"✓",
"authenticity_token"=>"wY+llV4qot5xDsxp1JvaltvPdrZND7goaorBTh8Vteo=",
"user"=>{ "id" => "51" },
"commit"=>"Update"}
@user = User.find(params[:user][:id])
def user_params
params.require(:user).permit(:id, :fname, :lname, :email)
end
答案 1 :(得分:3)
您在update1方法和user_params方法中给出了相同的名称(:user
)。这就是它给出错误的原因
def update1
@user = User.find(params[`:user`])
private
def user_params
params.require(`:user`).permit(:fname, :lname, :email)
end
尝试在
中更改:user
(提供其他名称)
@user = User.find(params[`:user`])
答案 2 :(得分:0)
我通过将:user
键放在根级别
{
"user":
{"utf8": "✓",
"authenticity_token": "wY+llV4qot5xDsxp1JvaltvPdrZND7goaorBTh8Vteo=",
"id": "51",
"fname": "fname",
"lname": "lname",
"email": "email",
"commit": "Update"
}
}