Ruby on rails Ruby returning中的输入字段;Can';“不要空白”;错误
我已经检查了其他浮动的答案,但没有找到解决我问题的答案,因为从我的验证中删除“attr\u accessor”会给我一个错误,说明“password\u confirm是一个未定义的方法”。我构建了这个应用程序,最初能够从登录/注册页面创建新用户。现在,当我尝试创建一个新用户时,我得到两个相互冲突的错误,我不能完全弄清楚。一个是一个回滚,显示“用户存在”,尽管用户没有显示在我的数据库中。另一个是,我收到错误消息“密码不能为空”和“密码确认不能为空”,尽管这两个字段都已填写 这是我的控制器代码:Ruby on rails Ruby returning中的输入字段;Can';“不要空白”;错误,ruby-on-rails,ruby,Ruby On Rails,Ruby,我已经检查了其他浮动的答案,但没有找到解决我问题的答案,因为从我的验证中删除“attr\u accessor”会给我一个错误,说明“password\u confirm是一个未定义的方法”。我构建了这个应用程序,最初能够从登录/注册页面创建新用户。现在,当我尝试创建一个新用户时,我得到两个相互冲突的错误,我不能完全弄清楚。一个是一个回滚,显示“用户存在”,尽管用户没有显示在我的数据库中。另一个是,我收到错误消息“密码不能为空”和“密码确认不能为空”,尽管这两个字段都已填写 这是我的控制器代码:
def create
user = User.create(name:params[:name], alias:params[:alias], email:params[:email], password:params[:password], password_confirmation:params[:password_confirm])
if !user.errors.messages.empty?
puts '********'
puts user.errors.full_messages
puts '********'
flash[:errors] = user.errors.messages
redirect_to '/users'
else user && user.authenticate(params[:password])
puts '********'
puts user.errors.full_messages
puts '********'
session[:id] = user.id
redirect_to "/ideas"
end
end
这是HTML:
<div class="">
<h3>Register Here:</h3>
<form action="/users/create" method="post">
<input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>">
Name:<input type="text" name='name'><br>
Alias:<input type="text" name='alias'><br>
Email Address:<input type="text" name='email'><br>
Password:<input type="text" name='password'><br>
<p>* Password must be at least 8 characters.</p>
Confirm Password:<input type="text" name="password_confirm"><br>
<input type="submit" value="Register">
</form>
</div>
在此处注册:
名称:
别名:
电子邮件地址:
密码:
*密码必须至少为8个字符
确认密码:
这是我的模型:
class User < ActiveRecord::Base
has_secure_password
has_many :ideas
has_many :likes
attr_accessor :password_confirm, :password
email_regex = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]+)\z/i
validates :name, presence: {message: ["Name can't be blank"]}
validates :alias, presence: {message: ["Alias can't be blank"]}
validates :password, presence: {message: ["Password can't be blank"]}, :on => :create, length: {minimum: 8}
validates :password_confirm, presence: {message:["Password Confirmation can't be blank"]}, :on => :create
validates :email, presence: {message: ["Email name can't be blank"]}, :format => { :with => email_regex}, :uniqueness => { :case_sensitive => false}, :on => :create
def total_likes
self.likes.sum(:count)
end
def total_posts
self.ideas.sum(:user_id)
end
end
class用户:创建,长度:{最小值:8}
验证:密码\u确认,状态:{message:[“密码确认不能为空”]},:on=>:创建
验证:电子邮件,状态:{message:[“电子邮件名称不能为空”]},:format=>{:with=>email\u regex},:university=>{:case\u sensitive=>false},:on=>:create
def total_喜欢什么
self.likes.sum(:count)
结束
def总员额
self.ideas.sum(:user\u id)
结束
结束
删除这一行,它会弄乱ActiveRecord为您处理事情的方式
attr_accessor :password_confirm, :password
仅供参考,此处的语法不正确:
else-user&&user.authenticate(params[:password])
应为“else-if”,使用“else”在我以前使用相同验证构建的所有应用程序中都有效。我试着在这一个中改变它,看看它是否有任何效果,但它没有。我的理解是,如果后面有多个检查,则应使用“elsif”,如果只有一个检查,则应使用“else”?对不起,是的,它是elsif
而不是javascript的else if
。它可能不会引发语法错误,但这不是一回事。当使用else
时,如果我删除该行,则不会将任何内容放在同一行上,我会得到一个错误,该错误表示“password\u confirm是一个未定义的方法”。