record = Member.find_by_user(params [:member] [:user])

时间:2013-09-27 02:20:51

标签: ruby-on-rails ruby-on-rails-3 find

我找到了一个示例代码,例如这篇文章的标题,并有一个问题。 为什么这样写成params[:member][:user]

我得到了我朋友的建议,他解释说[:member]表示表名,[:user]表示member表中包含的列名。 但是我没有得到它,因为表格总是复数的,显然他或她正试图在members表中搜索Member.find

1 个答案:

答案 0 :(得分:4)

它写为params[:member][:user],因为params是嵌套的哈希,例如:

params = {"utf8"=>"✓",
  "authenticity_token"=>"uAbvJ/LE1f8eDcANe+TVip5nsWfP/xJxxoGmsQyKFnU=",
  "access_token"=>"",
  "member"=> {"name"=>"foobar",
      "email"=>"foo@bar.com",
      "user"=>"jimmy",
      "session"=>"2013-01-17 13:15:00 UTC"},
  "commit"=>"Submit",
  "locale"=>"es"}

这意味着要获得member内部用户的价值,您需要编写类似params[:member][:user]的内容。这是Rails提交的表单的典型行为,因为模型数据将在其自己的哈希中,因为member在此示例中。