# 的未定义方法“update_attributes”
undefined method `update_attributes' for #
我收到这个错误
NoMethodError in UsersController#update
undefined method `update_attributes' for #<User id: 1,
first_name: "Bob", last_name: "Cool",
created_at: "2021-03-10 06:06:13.238325000 +0000",
updated_at: "2021-03-10 06:06:13.238325000 +0000">
我想用这样的表格编辑用户信息;
这是我的 users_controller.rb
;
before_action :set_user, only: [:show, :edit, :update]
def update
if @user.update_attributes(user_params)
redirect_to root_path
else
redirect_to edit_user_path(@user),
error: @user.errors.full_messages.join(', ')
end
end
private
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:first_name, :last_name)
end
这是我的edit.html.rb
<p>
<%= form_with model: @user, url: user_path(id: @user.id), method: :put, local: true do |form| %>
<%= render 'form', form: form %>
<% end %>
</p>
这是我的_form.html.erb
<%= form.label 'First Name: '%>
<%= form.text_field 'first_name' %>
<br/>
<%= form.label 'Last Name: '%>
<%= form.text_field 'last_name' %>
<br/>
<%= form.submit 'Submit' %>
我尝试查看@user
,但是当涉及到update_attributes
时,却出现了这个错误。
This method is deprecated or moved on the latest stable version.
update_attributes 已经
被弃用了。
您可以改用 update:
@user.update(user_params)
方法 update_attributes(params)
已弃用,不应再使用。您必须改用 update(params)
。
所以你的代码看起来像这样:
def update
if @user.update(user_params)
redirect_to root_path
else
redirect_to edit_user_path(@user),
error: @user.errors.full_messages.join(', ')
end
end
我收到这个错误
NoMethodError in UsersController#update
undefined method `update_attributes' for #<User id: 1,
first_name: "Bob", last_name: "Cool",
created_at: "2021-03-10 06:06:13.238325000 +0000",
updated_at: "2021-03-10 06:06:13.238325000 +0000">
我想用这样的表格编辑用户信息;
这是我的 users_controller.rb
;
before_action :set_user, only: [:show, :edit, :update]
def update
if @user.update_attributes(user_params)
redirect_to root_path
else
redirect_to edit_user_path(@user),
error: @user.errors.full_messages.join(', ')
end
end
private
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:first_name, :last_name)
end
这是我的edit.html.rb
<p>
<%= form_with model: @user, url: user_path(id: @user.id), method: :put, local: true do |form| %>
<%= render 'form', form: form %>
<% end %>
</p>
这是我的_form.html.erb
<%= form.label 'First Name: '%>
<%= form.text_field 'first_name' %>
<br/>
<%= form.label 'Last Name: '%>
<%= form.text_field 'last_name' %>
<br/>
<%= form.submit 'Submit' %>
我尝试查看@user
,但是当涉及到update_attributes
时,却出现了这个错误。
This method is deprecated or moved on the latest stable version.
update_attributes 已经 被弃用了。
您可以改用 update:
@user.update(user_params)
方法 update_attributes(params)
已弃用,不应再使用。您必须改用 update(params)
。
所以你的代码看起来像这样:
def update
if @user.update(user_params)
redirect_to root_path
else
redirect_to edit_user_path(@user),
error: @user.errors.full_messages.join(', ')
end
end