我是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 [:user]从表单中获取信息,并在调试信息中获取哈希值:
"user" => { "name" => "Foo Bar",
"email" => "foo@invalid",
"password" => "[FILTERED]",
"password_confirmation" => "[FILTERED]"
}
我知道params是哈希的哈希,但不知道params [:user]的含义。什么:用户是什么意思? :user表示User模型或只是变量名称?以下是什么关系:用户和&#34;用户&#34; ?
答案 0 :(得分:1)
答案在你的问题中,你有这个哈希
"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
模型
希望这有帮助!
答案 1 :(得分:0)
阅读此Rails params explained? 在这里你会找到有关轨道中的参数的解释。
:user是Symbol,“user”是string 在Ruby中,字符串是可变的,而符号是不可变的。这意味着只需要创建一个符号的副本。因此,如果你有
x =:my_str
y =:my_str
:my_str只会创建一次,而x和y指向相同的内存区域。另一方面,如果你有
x =“my_str”
y =“my_str”
包含my_str的字符串将被创建两次,x和y将指向不同的实例。
因此,符号通常用作Ruby中枚举的等价物,以及字典(哈希)的键。