我正在使用carrierwave上传用户模型中的个人资料图片。 如果用户尝试上载任何非图像的文件,则必须引发错误。但是,错误会在屏幕上显示两次。 请帮忙
用户模型代码 class User<的ActiveRecord ::基
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%>
答案 0 :(得分:2)
在erb
中,<% .. %>
用于评估其中的Ruby代码,<%= .. %>
用于评估以及在erb中打印输出。
在下面的代码中,您使用了<%= ... %>
两次,一次使用<%= message%>
显示错误消息,另一次使用<%= object.errors.full_messages.each do |message|%>
显示相同的错误消息。
这导致错误消息显示两次。修改您的代码如下所示,您只需要<%= ... %>
,而不是在迭代错误消息集合时显示错误消息。
<% object.errors.full_messages.each do |message|%> <%# Removed "=" %>
<li><%= message%></li>
<%end%>
答案 1 :(得分:0)
更改
<%= object.errors.full_messages.each do |message|%>
到
<% object.errors.full_messages.each do |message|%>
注意开头的<%
而不是<%=
<%=
用于打印出已计算表达式的输出。使用<%
用于指示仅应评估表达式并且不打印输出。