错误在 rails 中显示两次

Errors are displayed twice in rails

我正在使用carrierwave 上传用户模型中的个人资料图片。 如果用户尝试上传任何非图像文件,则必须引发错误。但是错误在屏幕上显示两次。 请帮助

用户模型代码 class 用户 < ActiveRecord::Base

include CarrierWave::MiniMagick

validates :email, :presence =>true,  :uniqueness => {case_sensitive: false}, :format => { :with=> /([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/, :message => "please enter a valid e-mail" }
validates :name, :presence=>true
validates :password ,:presence =>true, :confirmation=> true #, :length =>{ :minimum=>6, :maximum=>30}, :format=>{:with=>/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,30}/}

#for the image
mount_uploader :image, ImageUploader

#for the password
has_secure_password

结束

**代码ImageUploader **

def scale(width, height)
 image.resize widthxheight
   end

   #Create different versions of your uploaded files:
   version :thumb do
     process :resize_to_fit => [50, 50]
   end

  # Add a white list of extensions which are allowed to be uploaded.

   def extension_white_list
     %w(jpg jpeg gif png)
   end

部分错误代码

<% if object.errors.any?%>
<ul>
<%= object.errors.full_messages.each do |message|%>
    <li><%= message%></li>
    <%end%>
</ul>

<%end%>

改变

<%= object.errors.full_messages.each do |message|%>

<% object.errors.full_messages.each do |message|%>

注意开头的 <% 而不是 <%=

<%= 用于打印求值表达式的输出。使用 <% 表示只对表达式求值,不打印输出。

erb中,<% .. %>用于计算其中的Ruby代码,<%= .. %>用于计算并在erb中打印输出。

在下面的代码中,您使用了 <%= ... %> 两次,一次使用 <%= message%> 显示错误消息,另一次使用 <%= object.errors.full_messages.each do |message|%> 显示相同的错误消息。 这导致错误消息显示两次。如下修改您的代码,您只需要 <%= ... %> 在显示错误消息时而不是在遍历错误消息集合时。

<% object.errors.full_messages.each do |message|%> <%# Removed "=" %>
  <li><%= message%></li>
<%end%>