2014-11-06 192 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中的枚举,以及字典(散列)的键。