Paperclip (3.0 )и Rails (3.2 ):поле f.file _теряет путь к файлу при «новом» действии после ошибки проверки

Я настроил модель storyс вложением image, которое обрабатывает Paperclip, которое выглядит как:

class Story < ActiveRecord::Base  
  has_attached_file :image # [...]
  attr_accessible :user_id, :title, :image, :image_file_name
  belongs_to: user

  validates_presence_of :user_id
  validates :title,     :length => { :maximum => 50 }
  validates_attachment_size :image, :less_than => 2.megabytes, :unless => Proc.new { |story| story[:image].nil? }
  # [...] 
end

Когда я заполняю форму истории, это выглядит так::

<%= form_for @story, html: { multipart: true } do |f| %>
<% if @story.errors.any? %>
<div id="error-explanation">
    <ul>
        <% @story.errors.full_messages.each do |msg| %>
        <li class="error-mess">Error: <%= msg.downcase %></li>
        <% end %>
    </ul>
</div>
<% end %>

<%= f.text_field :title %></td>
<%= f.file_field :image %>
<%= f.submit t('.send') %>

<% end %>

Если проверка не проходит проверку для слишком длинного story.title, форма отображается правильно вместе с правильным сообщением об ошибке и , неверный заголовок уже заполнен, , но file_fieldтеперь пуст, и я должен щелкните еще раз, чтобы повторно -выбрать файл, который я хочу загрузить .

А вот так выглядят мои сторис _controller.rb :

def create
  @story = @current_user.stories.new(params[:story]) 
  if @story.save                                                                                                                   
    redirect_to thanks_path    
  else
    # !@story.save so I render action 'new' again just to
    # bang my head against this 'anomaly' 
    render action: "new"
  end              
end

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

8
задан Darme 24 June 2015 в 13:06
поделиться