Ruby on rails RubyonRails教程第7.21章,params[:user]

Ruby on rails RubyonRails教程第7.21章,params[:user],ruby-on-rails,Ruby On Rails,我是ROR的初学者,我读了第7.21章 class UsersController < ApplicationController . . . def create @user = User.new(params[:user]) # Not the final implementation! if @user.save # Handle a successful save. else render 'new' e

我是ROR的初学者,我读了第7.21章

class UsersController < ApplicationController
  .
  .
  .
  def create
    @user = User.new(params[:user])    # Not the final implementation!
    if @user.save
      # Handle a successful save.
    else
      render 'new'
    end
  end
end 

我知道params是hash的散列,但不知道params[:user]的含义。用户的意思是什么?用户:表示用户模型还是仅表示变量名?用户和“用户”之间的关系是什么?答案在你的问题中,你有这个散列

"user" => { "name" => "Foo Bar",
            "email" => "foo@invalid",
            "password" => "[FILTERED]",
            "password_confirmation" => "[FILTERED]"
          }
这里,
“user”
是键,因此为了访问该键的值,我们编写
params[“user”]
params[:user]
,这将返回所有值,这里的值是散列,即

{ "name" => "Foo Bar",
  "email" => "foo@invalid",
  "password" => "[FILTERED]",
  "password_confirmation" => "[FILTERED]"
}
因此,在编写
@user=user.new(params[:user])
时,实际上是在传递键
“user”
的值,如下所示

@user = User.new({ "name" => "Foo Bar",
                   "email" => "foo@invalid",
                   "password" => "[FILTERED]",
                   "password_confirmation" => "[FILTERED]"
                })
是的,
“user”
是单数的,就像
user
model一样

希望这有帮助

读这个 在这里,您可以找到rails中参数的解释

:user是符号,“user”是字符串 在Ruby中,字符串是可变的,而符号是不可变的。这意味着只需要创建符号的一个副本。因此,如果你有

x=:我的妈妈

y=:my_str

:my_str将只创建一次,并且x和y指向相同的内存区域。另一方面,如果你有

x=“我的妈妈”

y=“我的妈妈”

包含my_str的字符串将创建两次,x和y将指向不同的实例

因此,符号通常被用作Ruby中枚举的等价物,以及字典的键(哈希)

@user = User.new({ "name" => "Foo Bar",
                   "email" => "foo@invalid",
                   "password" => "[FILTERED]",
                   "password_confirmation" => "[FILTERED]"
                })