“51”的未定义方法“允许”:字符串
undefined method `permit' for "51":String
更新的时候出现这个错误,不知道为什么会出现这个错误
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。在第二个中,您假设它是属性的散列。
无论如何要解决你需要修改你的 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
您在 update1 方法和 user_params 中给出了相同的名称 (:user
) method.that 这就是它给出错误的原因
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`])
我通过将 :user
键放在根级别解决了这个问题
{
"user":
{"utf8": "✓",
"authenticity_token": "wY+llV4qot5xDsxp1JvaltvPdrZND7goaorBTh8Vteo=",
"id": "51",
"fname": "fname",
"lname": "lname",
"email": "email",
"commit": "Update"
}
}
更新的时候出现这个错误,不知道为什么会出现这个错误
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。在第二个中,您假设它是属性的散列。
无论如何要解决你需要修改你的 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
您在 update1 方法和 user_params 中给出了相同的名称 (:user
) method.that 这就是它给出错误的原因
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`])
我通过将 :user
键放在根级别解决了这个问题
{
"user":
{"utf8": "✓",
"authenticity_token": "wY+llV4qot5xDsxp1JvaltvPdrZND7goaorBTh8Vteo=",
"id": "51",
"fname": "fname",
"lname": "lname",
"email": "email",
"commit": "Update"
}
}