2014-11-06 190 views
0

我是ROR的初學者,我閱讀7.21章。Ruby on Rails教程第7.21章params [:user]

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" => { "name" => "Foo Bar", 
      "email" => "[email protected]", 
      "password" => "[FILTERED]", 
      "password_confirmation" => "[FILTERED]" 
      } 

我konw params爲哈希的散列,但不知道params [:user]的含義。什麼是:用戶的意思是? The:用戶代表用戶模型還是變量名稱?用戶和「用戶」的關係是什麼?

回答

1

答案是你的問題,你有這樣的哈希

"user" => { "name" => "Foo Bar", 
      "email" => "[email protected]", 
      "password" => "[FILTERED]", 
      "password_confirmation" => "[FILTERED]" 
      } 

這裏,"user"是關鍵,所以要訪問這些關鍵的價值觀,我們寫params["user"]params[:user],這將回報給所有值,這裏的值是一個哈希,即

{ "name" => "Foo Bar", 
    "email" => "[email protected]", 
    "password" => "[FILTERED]", 
    "password_confirmation" => "[FILTERED]" 
} 

所以,當你正在編寫@user = User.new(params[:user]),你實際上是通過關鍵"user"的價值,這樣

@user = User.new({ "name" => "Foo Bar", 
        "email" => "[email protected]", 
        "password" => "[FILTERED]", 
        "password_confirmation" => "[FILTERED]" 
       }) 

是的,"user"是奇異的,就像User模型

希望這有助於!

0

閱讀這個Rails params explained? 在這裏你會找到解釋什麼是在鋼軌params。

:用戶是符號,「用戶」是字符串 在Ruby中,字符串是可變的,而符號是不可變的。這意味着只需要創建一個符號的一個副本。因此,如果你有

X =:my_str

Y =:my_str

:my_str只會創建一次,x和y指向相同的內存區域。在另一方面,如果你有

X = 「my_str」

Y =包含my_str將被創建兩次,x和y將指向不同的情況下, 「my_str」

的字符串。

因此,符號經常用作等同於Ruby中的枚舉,以及字典(散列)的鍵。