当前位置: 首页 > 知识库问答 >
问题:

用户中的无方法错误#索引

尚俊楠
2023-03-14

我对以下应用程序有问题,我一直在railsCasts的Rails 3中进行第211集验证,但当我尝试添加类EmailFormatValidator时,会触发一个错误

NoMethodError in Users#index

Showing /home/fernando/Validations/store/app/views/users/index.html.erb where line #12 raised:

undefined method `each' for nil:NilClass
Extracted source (around line #12):

9:     <th></th>
10:   </tr>
11: 
12: <% @users.each do |user| %>
13:   <tr>
14:     <td><%= user.name %></td>
15:     <td><%= user.email %></td>
Rails.root: /home/fernando/Validations/store

模型/user.rb

class User < ActiveRecord::Base
  validates :email, :presence => true, :uniqueness => true, :email_format => true
end

lib/email_format_validator.rb

class EmailFormatValidator < ActiveModel::EachValidator
  def validate_each(object, attribute, value)
    unless value =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
      object.errors[attribute] << (options[:message] || "is not formatted properly") 
    end
  end
end

/controller/user.rb

class UsersController < ApplicationController
  # GET /users
  # GET /users.json
  def index
    @users = User.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @users }
    end
  end

  # GET /users/1
  # GET /users/1.json
  def show
    @user = User.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @user }
    end
  end

# GET/users/new # GET/users/new . JSON def new @ user = user . new

respond_to do |format|
  format.html # new.html.erb
  format.json { render json: @user }
end

终止

# GET /users/1/edit def edit @user = User.find(params[:id]) end

#POST /users#POST/users.json创建@user=User.new(参数[: user])

respond_to do |format|
  if @user.save
    format.html { redirect_to @user, notice: 'User was successfully created.' }
    format.json { render json: @user, status: :created, location: @user }
  else
    format.html { render action: "new" }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end

终止

#PUT/users/1#PUT/users1.json def update@user=user.find(params[:id])

respond_to do |format|
  if @user.update_attributes(params[:user])
    format.html { redirect_to @user, notice: 'User was successfully updated.' }
    format.json { head :no_content }
  else
    format.html { render action: "edit" }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end

终止

#删除 /users/1#删除 /users/1.jsondef销毁@user=User.find(params[: id])@user.destroy

respond_to do |format|
  format.html { redirect_to users_url }
  format.json { head :no_content }
end

结束 结束

当我单击用户控制器#索引中的一次性参数错误时,出现此错误

Unknown validator: 'EmailFormatValidator'
Rails.root: /home/fernando/Validations/store

共有1个答案

蔚楷
2023-03-14

请在应用程序文件夹中创建验证程序目录。

您的文件名应类似于验证器文件夹中的 email_format_validator.rb

#app/model/user.rb
class User < ActiveRecord::Base
  validates :email, :presence => true, :uniqueness => true, :email_format => true
end

请从“lib文件夹”中删除此验证器文件。

使用Devise为电子邮件编写Rails验证的简单方法

更简单的< code >验证:email,:presence =

 类似资料:
  • 我有新的Ubuntu15.04和我安装了sbt通过本指南与

  • 我正在构建一个简单的客户机-服务器系统。我构建了一个Java服务器&一个运行在mine设备上的android客户端(两者连接到同一个LAN)。 当我试图建立一个连接(通过单击按钮)时,客户端失败并出现错误 Android客户端代码: manifest.xml: 布局文件:

  • 问题内容: 我必须使用测试工具编译我的代码,但是,当该测试工具调用我的方法时,我收到此错误: “课程Course中的getCourseDetails方法不能应用于给定类型; 必需:java.lang.String,int,java.lang.String,boolean,java.lang.String.java.lang.String,double 找到:没有参数 原因:实际参数列表和形式参数列

  • 尝试运行我的蝗虫文件时,在尝试命令蝗虫-f蝗虫文件.py--host时,我遇到了以下错误=http://localhost:8080 文件“/home/sonali/.local/lib/python3.6/site packages/蝗虫/user/task.py”,第280行,运行self.schedule_任务(self.get_next_task())文件“/home/sonali/.lo

  • 我使用Symfony HttpClient调用外部api。当stastusCode为200时,我可以使用方法来检索API响应。如果API响应为400,则抛出ClientExc0019,并且无法获取外部API消息。

  • 问题内容: 我是Play Framework的新手,正在尝试从本手册中构建待办事项清单。 当我尝试运行该应用程序时,出现错误: 我的代码是(相关部分): MainController.java : index.sacala.html : 我环顾四周,发现最接近的线程就是这个线程,但是我无法使用它解决问题(可能是由于缺乏对环境/框架的了解…)。 值得一提的最后一件事: 如果将’index.sacal