簡體   English   中英

Ruby on Rails教程第7.21章,參數[:user]

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM