[英]Ruby on Rails Tutorial chapter 7.21, params[:user]
我是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代表用户模型还是变量名? :user和“ 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
模型
希望这可以帮助!
看过这个Rails参数解释了吗? 在这里,您将找到有关Rails中的参数的解释。
:user是符号,“ user”是字符串在Ruby中,字符串是可变的,而符号是不可变的。 这意味着只需要创建一个符号的副本。 因此,如果您有
x =:my_str
y =:my_str
:my_str仅创建一次,x和y指向相同的内存区域。 另一方面,如果您有
x =“ my_str”
y =“ my_str”
包含my_str的字符串将创建两次,并且x和y指向不同的实例。
结果,符号通常与Ruby中的枚举等效,也用作字典的键(哈希)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.