Ruby on rails Ruby returning中的输入字段;Can';“不要空白”;错误

Ruby on rails Ruby returning中的输入字段;Can';“不要空白”;错误,ruby-on-rails,ruby,Ruby On Rails,Ruby,我已经检查了其他浮动的答案,但没有找到解决我问题的答案,因为从我的验证中删除“attr\u accessor”会给我一个错误,说明“password\u confirm是一个未定义的方法”。我构建了这个应用程序,最初能够从登录/注册页面创建新用户。现在,当我尝试创建一个新用户时,我得到两个相互冲突的错误,我不能完全弄清楚。一个是一个回滚,显示“用户存在”,尽管用户没有显示在我的数据库中。另一个是,我收到错误消息“密码不能为空”和“密码确认不能为空”,尽管这两个字段都已填写 这是我的控制器代码:

我已经检查了其他浮动的答案,但没有找到解决我问题的答案,因为从我的验证中删除“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是一个未定义的方法”。