小编Asy*_*raf的帖子

# 的未定义方法“update_attributes”

我收到这个错误

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)

ruby forms model-view-controller ruby-on-rails

2
推荐指数
1
解决办法
1855
查看次数

警告:已初始化常量 ERB::Revision

我跑步后确实收到这些警告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.0ruby/3.0.0文件有重复。我想如何删除这个警告?

ruby rubygems ruby-on-rails rspec-rails rbenv

0
推荐指数
1
解决办法
1029
查看次数

退回 Ruby Hash 中价格低于 300 美元的任何物品

我想退回任何便宜的商品,这应该退回所有价格低于 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)

ruby arrays inventory-management ruby-hash

0
推荐指数
1
解决办法
66
查看次数