Rails教程Ch12 - 查询params

时间:2016-10-14 05:16:07

标签: ruby-on-rails

第12章是关于添加重置密码的方法。在开始时,我们创建一个名为PasswordResets的控制器。

对于create动作,该方法定义为:

def create
    @user = User.find_by(email: params[:password_reset][:email].downcase)
    if @user
      @user.create_reset_digest
      @user.send_password_reset_email
      flash[:info] = "Email sent with password reset instructions"
      redirect_to root_url
    else
      flash.now[:danger] = "Email address not found"
      render 'new'
    end
  end

我的问题是:params的密钥[:password_reset]是如何创建的?它总是在那里,我们做了什么让它出现?

Params是我觉得有点混乱的东西,无法理解我的头脑!

1 个答案:

答案 0 :(得分:0)

假设您正在谈论 Michael Hartl的 Rails教程: 您可以在密码重置表单的代码中看到有如下所示的行生成表单:

<%= form_for(:password_reset, url: password_resets_path) do |f| %>

email字段类似于<%= f.email_field :email, class: 'form-control' %>

因此,在呈现表单时,Rails将以form_name[field_name]的格式呈现表单名称,以便电子邮件字段名称变为password_reset[email]。当您访问控制器中的参数时,您会得到email参数范围内的password_reset参数值,因为params是基本ruby hash所以您的代码变为{{1} }。如果您愿意,可以更改表单名称,只需将params[:password_reset][:email]中的password_reset更改为form_for或您喜欢的内容,就可以访问reset

我希望你理解我的观点。我不擅长解释。