Ruby on rails RubyonRails参数散列及其';内容

Ruby on rails RubyonRails参数散列及其';内容,ruby-on-rails,ruby,web,hash,symbols,Ruby On Rails,Ruby,Web,Hash,Symbols,我对RubyonRails和Web开发都是新手,当我在youtube上观看Michael Hartl的Rails教程时,遇到了一个非常混乱的代码。代码是: def create @user = User.new(params[:user]) end 我就是不明白“:user”键从哪里来,或者它的值是什么。我一直试图阅读ruby中所有的符号和散列,但这让我更加困惑。起初,教程中有以下代码: def show @user = User.find(params[:id]) @title = @use

我对RubyonRails和Web开发都是新手,当我在youtube上观看Michael Hartl的Rails教程时,遇到了一个非常混乱的代码。代码是:

def create
@user = User.new(params[:user])
end
我就是不明白“:user”键从哪里来,或者它的值是什么。我一直试图阅读ruby中所有的符号和散列,但这让我更加困惑。起初,教程中有以下代码:

def show
@user = User.find(params[:id])
@title = @user.name
end
其中我了解到“params[:id]”是一个键值为:id的散列,其中:id=>(数据库中的id),但对于params[:user],我只是迷路了。我没有任何“user”列,但我的模型名为“user”


因此,我的简单问题是。。。“:user”键来自哪里?它的值是什么?

在表单发布后检查开发日志。参数发送为

'user' => {'id' => 'someID', 'name' => 'someName', 'email' =>'some email' }

因此,应该有一个包含所有字段数据的用户哈希。您只能在控制器中捕获
params[:user]
中的值,就像:user是父散列一样。

检查表单发布后的开发日志。参数发送为

'user' => {'id' => 'someID', 'name' => 'someName', 'email' =>'some email' }

因此,应该有一个包含所有字段数据的用户哈希。您只能在控制器中捕获
params[:user]
中的值,就像:user是父散列一样。

它来自您的表单,如

= form_for(@user, :url =>  url) do |f|
  = render 'shared/error_explanation', :object => @user

  = f.label t('users.email')
  = f.text_field :email, :autocomplete => 'off'

  = f.label t('users.password')
  = f.password_field :password, :autocomplete => 'off'

  = f.label t('users.password_confirmation')
  = f.password_field :password_confirmation, :autocomplete => 'off'

  %br

  = f.submit :class => 'btn'
它会产生类似于

<form accept-charset="UTF-8" action="/users/create_by_admin" id="new_user" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="xxx=" /></div>  
  <label for="user_Email">Email</label>
  <input autocomplete="off" id="user_email" name="user[email]" size="30" type="text" value="" />

  <label for="user_password">password</label>
  <input autocomplete="off" id="user_password" name="user[password]" size="30" type="password" />

  <label for="user_password confirmation">password confirmation</label>
  <input autocomplete="off" id="user_password_confirmation" name="user[password_confirmation]" size="30" type="password" />

  <br>

  <input class="btn" name="commit" type="submit" value="Create user" />
</form>

电子邮件
密码
密码确认

查看名称属性。因此,
params
将类似于
{“utf8”=>”✓", "真实性\u令牌“=>”xxx=“,”用户“=>{”电子邮件“=>”qwerty@qwerty.qw“,“密码”=>“[筛选]”,“密码确认”=>“[筛选]”},“提交”=>“创建用户”}


User.creae
方法使用模型的属性获取哈希值。

它来自您的表单,如

= form_for(@user, :url =>  url) do |f|
  = render 'shared/error_explanation', :object => @user

  = f.label t('users.email')
  = f.text_field :email, :autocomplete => 'off'

  = f.label t('users.password')
  = f.password_field :password, :autocomplete => 'off'

  = f.label t('users.password_confirmation')
  = f.password_field :password_confirmation, :autocomplete => 'off'

  %br

  = f.submit :class => 'btn'
它会产生类似于

<form accept-charset="UTF-8" action="/users/create_by_admin" id="new_user" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="xxx=" /></div>  
  <label for="user_Email">Email</label>
  <input autocomplete="off" id="user_email" name="user[email]" size="30" type="text" value="" />

  <label for="user_password">password</label>
  <input autocomplete="off" id="user_password" name="user[password]" size="30" type="password" />

  <label for="user_password confirmation">password confirmation</label>
  <input autocomplete="off" id="user_password_confirmation" name="user[password_confirmation]" size="30" type="password" />

  <br>

  <input class="btn" name="commit" type="submit" value="Create user" />
</form>

电子邮件
密码
密码确认

查看名称属性。因此,
params
将类似于
{“utf8”=>”✓", "真实性\u令牌“=>”xxx=“,”用户“=>{”电子邮件“=>”qwerty@qwerty.qw“,“密码”=>“[筛选]”,“密码确认”=>“[筛选]”},“提交”=>“创建用户”}


User.creae
方法使用模型的属性获取散列。

要创建新用户,我们将执行以下操作

  <%= form_for :user do |f| %>
    ......
  <% end %>
通过
params[:user]。检查
您可以看到控制器将要查看的内容


params
方法是表示来自表单的
参数(或字段)的对象。params方法返回一个ActiveSupport::HashWithInferenceTaccess对象,该对象允许您使用字符串或符号访问哈希的键。

要创建新用户,我们将执行以下操作

  <%= form_for :user do |f| %>
    ......
  <% end %>
通过
params[:user]。检查
您可以看到控制器将要查看的内容


params
方法是表示来自表单的
参数(或字段)的对象。params方法返回一个ActiveSupport::HashWithInferenceTaccess对象,该对象允许您使用字符串或符号访问哈希的键。

我明白了。只是为了澄清我的理解是否正确,简而言之,“params[:user]的值就是表单?我明白了。只是为了澄清我的理解是否正确,简而言之,“params[:user]的值就是表单?