Ruby on rails 未定义的方法“许可证和x27”;至于;“51”节:一串
当我更新时会出现此错误,我不知道为什么会出现此错误Ruby on rails 未定义的方法“许可证和x27”;至于;“51”节:一串,ruby-on-rails,params,Ruby On Rails,Params,当我更新时会出现此错误,我不知道为什么会出现此错误 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, :lna
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 %>
'窗体控件'%>
'窗体控件'%>
'窗体控件'%>
请帮我解决这个问题……您的代码现在的形式没有意义:
@user = User.find(params[:user])
if @user.update_attributes(user_params)
在第一行中,假设params[:user]等于id。在第二行中,假设它是属性的散列
无论如何,要解决此问题,您需要修改用户参数
方法,例如:
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
您在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":
{"utf8": "✓",
"authenticity_token": "wY+llV4qot5xDsxp1JvaltvPdrZND7goaorBTh8Vteo=",
"id": "51",
"fname": "fname",
"lname": "lname",
"email": "email",
"commit": "Update"
}
}
显示更新表单视图您的问题是
params.require(:user)
返回“51”(因为params[:user]=“51”
)。能否修改查询以将id作为参数[:user][:id]
传递?@Nitin Rajan能否请您解释一下这些名称冲突的原因?我认为解释问题的原因和解决方案一样重要。这是可行的,但发送的值不会保存在数据库中。该值保存为null。
{
"user":
{"utf8": "✓",
"authenticity_token": "wY+llV4qot5xDsxp1JvaltvPdrZND7goaorBTh8Vteo=",
"id": "51",
"fname": "fname",
"lname": "lname",
"email": "email",
"commit": "Update"
}
}