Je débute avec attachment_fu. J'ai déjà réussi à l'utiliser pour associer une photo à un modèle à partir d'un formulaire séparé. Je veux maintenant avoir une relation 'polymorphique' (pouvoir associer une image à plusieurs controller en ayant un seul modèle image)
Je prend l'exemple du modèle 'association' ou je veux mettre un champ 'image' dans le formulaire de création.
Modèle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class Association < ActiveRecord::Base has_one :image, :as => :attachable, :dependent => :destroy end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class Image < ActiveRecord::Base belongs_to :attachable, :polymorphic => true has_attachment :content_type => :image, :storage => :file_system, :max_size => 500.kilobytes, :resize_to => '320x200', :thumbnails => { :thumb => [50,50] }, :processor => :Rmagick validates_as_attachment end
Controlleur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 def new @association = Association.new end def create @association = Association.new(params[:association]) image = @association.create_image(params[:image]) if @association.save and image.save flash[:notice] = 'Association was successfully created.' redirect_to :action => 'list' else render :action => 'new' end end
Vue:
Mais j'obtiens l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <h1>Création d'une nouvelle association</h1> <% form_tag :action => 'create' do %> <%= error_messages_for :association %> <%= error_messages_for :image %> <p><label for="association_nom">Nom</label><br/> <%= text_field 'association', 'nom' %></p> <p><label for="association_description">Contenu de la page:</label><br/> <%= text_area 'association', 'description' %></p> <%= file_field 'image', :uploaded_data %> <%= submit_tag "Create" %> <% end %> <%= link_to 'Back', :action => 'list' %>
undefined method `content_type' for "2083186.jpg":String
Je ne comprend pas à quoi cette erreur est lié...
Partager