我收到这个错误
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">
Run Code Online (Sandbox Code Playgroud)
我想用这样的形式编辑用户信息;
这是我的users_controller.rb;
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">
Run Code Online (Sandbox Code Playgroud)
这是我的edit.html.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 …Run Code Online (Sandbox Code Playgroud) 我跑步后确实收到这些警告rspec
/Users/myname/.rbenv/versions/3.0.0/lib/ruby/3.0.0/erb.rb:259: warning: already initialized constant ERB::Revision
/Users/myname/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/erb-2.2.3/lib/erb.rb:260: warning: previous definition of Revision was here
/Users/myname/.rbenv/versions/3.0.0/lib/ruby/3.0.0/erb.rb:367: warning: already initialized constant ERB::Compiler::Scanner::DEFAULT_STAGS
/Users/myname/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/erb-2.2.3/lib/erb.rb:369: warning: previous definition of DEFAULT_STAGS was here
/Users/myname/.rbenv/versions/3.0.0/lib/ruby/3.0.0/erb.rb:368: warning: already initialized constant ERB::Compiler::Scanner::DEFAULT_ETAGS
/Users/myname/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/erb-2.2.3/lib/erb.rb:370: warning: previous definition of DEFAULT_ETAGS was here
/Users/myname/.rbenv/versions/3.0.0/lib/ruby/3.0.0/erb.rb:489: warning: already initialized constant ERB::Compiler::TrimScanner::ERB_STAG
/Users/myname/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/erb-2.2.3/lib/erb.rb:491: warning: previous definition of ERB_STAG was here
/Users/myname/.rbenv/versions/3.0.0/lib/ruby/3.0.0/erb.rb:830: warning: already initialized constant ERB::NOT_GIVEN
/Users/myname/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/erb-2.2.3/lib/erb.rb:832: warning: previous definition of NOT_GIVEN was here
.......
Run Code Online (Sandbox Code Playgroud)
它说我的3.0.0和ruby/3.0.0文件有重复。我想如何删除这个警告?
我想退回任何便宜的商品,这应该退回所有价格低于 300 美元的商品。
这是主类;
class ShoesInventory
def initialize(items)
@items = items
end
def cheap
# this is my solution, but it just print out an array of boolean
@items.map { |item| item[:price] < 30 }
# to be implemented
end
end
Run Code Online (Sandbox Code Playgroud)
这是该类的一个实例;
ShoesInventory.new([
{price: 101.00, name: "Nike Air Force 1 Low"}},
{price: 232.00, name: "Jordan 4 Retro"},
{price: 230.99, name: "adidas Yeezy Boost 350 V2"},
{price: 728.00, name: "Nike Dunk Low"}
]).cheap
Run Code Online (Sandbox Code Playgroud)
我希望结果是这样的;
# => [
# {price: …Run Code Online (Sandbox Code Playgroud)