1

我正在尝试在 Ruby on Rails 中创建一个注册表单。

我的表单当前表单如下所示:

<%= form_for @util, :remote => true do |f| %>
 <div class="register-form">
    <div class=form-name>
       <span>Name </span>
       <span><%= f.text_field :name %></span>
    </div>
    <div class=form-surname>
        <span>Surname </span>
        <span><%= f.text_field :surname %></span>
    </div>
    <div class=form-email>
         <span>E-mail </span>
        <span><%= f.text_field :email %></span>
    </div>
    <div class=form-password>
        <span>Password </span>
        <span><%= f.text_field :password %></span>
    </div>
    <div class="submit">
          <%= f.submit "Register" %>
    </div>
  </div>
<% end %>

我创建它的控制器如下所示:

def create
  @user = User.new(params[:util])
  @user.password = encrypt_password(@user.password)

  if @user.save!
    respond_to do |format|
      format.json { render :partial => "partials/form.html.erb", :task => @task }
    end
  end 
end

当我在调试期间检查变量时,我可以看到结果@user.password为零,但是如果我手动检查它,因为@user.password它给了我输入的内容。当我尝试将新用户保存在数据库中时,它总是有一个零密码。

即使参数和加密正确,为什么密码总是为零?


编辑:

感谢您对代码和密码安全字段问题的帮助。我已经忘记了,在回复后查看模型后,我发现了一些问题:

class User < ActiveRecord::Base
 attr_accessible :email, :name, :password, :surname
 has_and_belongs_to_many :projects

 attr_accessor :password

删除后attr_accessor,我设法访问密码并毫无问题地保存在数据库中。

4

1 回答 1

0

请更换:

<%= f.text_field :password %>

到:

 <%=f.password_field :password%>

还:

@user.password = encrypt_password(@user.password)` 

应该是这样的:

@user.password = encrypt_password(params[:util][:password])
于 2013-09-06T10:59:34.937 回答