gdf*_*dfg 4 ruby-on-rails ruby-on-rails-5
这是我的看法:
<%=form_for [:admin, @user] do |f|%>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
<%=f.label :name %>
<%=f.text_field :name %>
<%=f.label :email %>
<%=f.text_field :email %>
<%=f.label :password %>
<%=f.password_field :password %>
<%=f.label :password_confirmation %>
<%=f.password_field :password_confirmation%>
<%=f.submit "Submit" %>
<%end%>
Run Code Online (Sandbox Code Playgroud)
添加用户的控制器代码:
def create
@user = User.new(user_params)
if @user.save
redirect_to admin_users_path
else
render 'new'
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password)
end
Run Code Online (Sandbox Code Playgroud)
这些是模型中的验证:
validates :name, presence: true
validates :email, presence: true
validates :password, presence: true
validates :password, confirmation: { case_sensitive: true }
Run Code Online (Sandbox Code Playgroud)
但是confirmation password不起作用.
验证适用于所有(它们是必需的)表单元素,但第二个密码输入除外 - password_confirmation它可以与第一个密码输入不同.
即使第二个密码输入为空,也会将用户添加到数据库中,因为在验证规则中,没有规则.
我究竟做错了什么 ?
您需要添加password_confirmation到user_params控制器.
即
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5380 次 |
| 最近记录: |