Ruby on rails RubyonRails教程第7.21章,params[:user]
我是ROR的初学者,我读了第7.21章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
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]"
})