2

J'ai deux modèles imbriqués avec accepts_nested_attributes_for:Les messages d'erreur ne pas afficher les messages d'erreur de validation de Paperclip

class Place < ActiveRecord::Base 
    # Relations.. 
    accepts_nested_attributes_for :place_photos, :allow_destroy => true 
    # others methods... 
end 

-

class PlacePhoto < ActiveRecord::Base 

    belongs_to :place 
    # attr_accessible :photo_index                                
    has_attached_file :image, :styles => { :small => "120>", :large => "640x480>"} 
    validates_attachment_presence :image 
    validates_attachment_size :image, :less_than => 500.kilobytes, 
     :if => Proc.new {|imports| !imports.image_file_name.blank? }, 
     :message => "This message probably won't be shown! :P" 
end 

Voici la vue pour ajouter des images:

<%= form_for([:profile, @place], :html => {:multipart => true }) do |f| %> 

     <% if @place.errors.any? %> 
     <div id="error_explanation"> 
      <h2><%= pluralize(@place.errors.count, "error") %> prohibited this place from being saved:</h2> 

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

     </div> 
     <% end %> 
# ... 
      <%= f.fields_for :place_photos do |p| %> 
      <% if p.object.new_record? %> 
       <div> <%= image_tag("place_avatar.png", :class => "listTabsImg", :height => '120', :width => '120') %> 
       <div class="listTabsTxt"> 
        <span>Upload new image</span> <br/> 
        <%= p.file_field :image %><br/> 
        <div class="clear"></div> 
       </div> 
       </div> 
       <br/> 
      <% end %> 
      <% end %> 

<%= f.submit "Upload all", :class => "btnGB" %> 
<% end %> 

Malheureusement, les messages d'erreur de validation Paperclip ne sont pas affichés (c'est-à-dire "Ce message ne sera probablement pas affiché! ").

Est-ce possible de résoudre ce problème?

Répondre

3

Le problème était dans le contrôleur. J'utilise:

redirect_to photos_path

au lieu de:

render :action => "edit"

redirect_to écraser @object (action appelle de modifier directement), de sorte @object.errors sont nettoyés.

Quand j'ai vu ça, j'ai juste lâché. : D

Questions connexes