我正在尝试在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
,它会给我输入的内容。
当我尝试将新用户保存在数据库中时,它总是有一个零密码。
即使params和encrypt是正确的,任何关于为什么密码总是为零的消息?
编辑:
感谢您对代码和密码安全字段问题的帮助。我已经忘记了这件事,在回复之后看了一下模特后我注意到了一些事情:
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :surname
has_and_belongs_to_many :projects
attr_accessor :password
删除attr_accessor
后,我设法获取密码并保存在数据库中而没有问题。
答案 0 :(得分:0)
请更改:
<%= f.text_field :password %>
要:
<%=f.password_field :password%>
此外:
@user.password = encrypt_password(@user.password)`
应该是这样的:
@user.password = encrypt_password(params[:util][:password])