使用client_side_validations对Rails回形针内容类型进行验证

时间:2013-03-15 11:45:32

标签: ruby-on-rails-3 paperclip

我正在使用回形针进行图像处理。我想确保只上传图像文件(jpeg / png)。 这是我的回形针验证规则。

validates_attachment :photo, :presence => { :message => "is required" }, :content_type => { :content_type => ['image/jpeg', 'image/jpg', 'image/png'], :message => "Invalid content type" }

如果用户上传非图像文件,则不会保存验证工作和记录。但错误消息存储在@ news.errors.messages [: photo_content_type ]中,而不是@ news.errors.messages [:照片]

我正在使用client-side-validations gem来显示错误消息。由于无效内容类型消息附加到: photo_content_type ,因此不会内嵌显示。

现在我正在显示如下消息:

<% if @news.errors.messages[:photo_content_type] %>
    <div class="field_with_errors">
        <%= f.file_field :photo %>
        <label for="" class="validation-error-message">
            <%= @news.errors.messages[:photo_content_type][0] %>
        </label>
    </div>
<% else %>
    <%= f.file_field :photo %>
<% end %>

是否有更好的方法,以便如果用户上传非图像文件,则该消息会添加到@ news.errors.messages [:photo]

更新
我在验证回调后添加了:

after_validation :join_img_errors

def join_img_errors
  if errors.messages.has_key?(:photo_content_type)
    errors.messages[:photo] = errors.messages[:photo_content_type]
  end
end

这样,我不必修改视图代码。但是我仍然需要将回调添加到使用回形针的所有模型中。

0 个答案:

没有答案