[英]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.