辅助函数不起作用

helper functions are not working

users_controller.rb

    class UsersController < ApplicationController

    include UsersHelper

      def new
        @user = User.new
      end

      def create
        if isUsernameTaken?
            render 'new'
        elsif isEmailTaken?
            render 'new'
        else
            @user = User.new(user_params)
            if @user.save
            else
                render 'new'
            end
         end
      end

      private

      def user_params   
         params.require(:user).permit(:username,:email,:password,:password_confirmation)
     end
  end

users_helper.rb

module UsersHelper

    def isUsernameTaken?
        !(User.find_by(username: params[:username]).nil?)
    end

    def isEmailTaken?
        !(User.find_by(email: params[:email]).nil?)
    end


end

问题是 isUsernameTaken?isEmailTaken? 永远不会执行,即使我再次输入相同的用户名,else 部分也会执行。为什么会这样?

这是因为 params[:username]params[:email] 在您的控制器中始终为空白。它们应该是 params[:user][:username]user_params[:username].

无论如何,这些检查属于模型,而不是控制器,并且已经有验证器可以完全按照您的意愿执行操作:

class User < ActiveRecord::Base
  validates :email, :username, uniqueness: true
end