繁体   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