Как проверить "file_fields" в рельсах 3 - PullRequest
0 голосов
/ 18 мая 2011

Я новичок в рельсах, пожалуйста, направьте меня.

Я хочу проверить "file_field" для загрузки изображения.просто jpg / png / gif может быть загружен и определенного размера, как максимальный размер (500x500)

это мой _form.html.erb

<%= form_for(@photo, :html => {:multipart => true} ) do |f| %>
<% if @photo.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@photo.errors.count, "error") %> prohibited this photo from being saved:</h2>

  <ul>
  <% @photo.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
</div>
<% end %>

<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :description %><br />
<%= f.text_area :description, :size => '115x20' %>
</div>
<div class="field">
<label for="image_file">File</label><br />
<%= file_field 'upload', 'datafile'%>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %> 

, и я попытался сделать проверку, как это

class Photo < ActiveRecord::Base
validates_presence_of :title, :description, :upload
validates_uniqueness_of :title

validates_format_of :upload, :allow_blank => false,
                  :with    => %r{\.(gif|jpg|png)$}i,
                  :message => 'must be a URL for GIF, JPG ' +
                              'or PNG image.'
end

и ошибка выглядит следующим образом

undefined method `upload' for #<Photo:0xad6b294>

я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2013

Какой камень для загрузки файлов вы используете?Если вы используете Carrierwave, проверьте эту ссылку https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Validate-attachment-file-size

0 голосов
/ 18 мая 2011

если вы используете какой-либо плагин для загрузки фотографий, вы найдете методы проверки с ним

например, используя papaerclip. вы найдете

validates_attachment_size :upload, :less_than => 2.megabytes

, а также измените свой код

<%= file_field 'upload', 'datafile'%> to <%= f.file_field :upload, 'datafile'%>
...