Bonjour,
Celà fais plusieurs jours que j'essaie et je n'arrive pas à trouver une solution donc j'ai décidé de poster mon problème ici.
Je dois ajouter aux profils utilisateurs des photos. J'arrive à enregistrer la photo dans la bdd mais ensuite j'arrive pas à l'afficher.
j'ai donc créer un formulaire d'upload avec un model et controller picture qui a les champs suivants :
# id :integer not null, primary key
# desc :string(255)
# name :string(255)
# content_type :string(255)
# data :binary(1048576)
# user_id :integer
Mon champs formulaires et comme suit :
views/pictures/get
Mon controller est comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <% form_for(@picture, :html=>{:multipart => true}) do |f| %> <div class="field"> <%= f.label :desc, "Descriptions" %> <%= f.text_field :desc %> </div> <div class="field"> <%= f.label :data %> <%= f.file_field("uploaded_picture") %> </div> <%= f.submit 'Charger' %> <% end %>
controller/pictures
Mon model est comme suit :
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
21
22
23
24
25
26 def get @title = "Ajout la photo" @picture = Picture.new end def create @title = 'Edite ton profile et rajoute une photo !' @picture =current_user.pictures.build(params[:picture]) if @picture.save redirect_to pictures_path, :flash => {:success => "Votre photo est bien enregistrée"} else render 'get', :flash => {:error => "Une erreur s'est produite, veuillez recommencer"} end end def show @title = "Mes photos" @picture = Picture.send_data(@picture.data, :filename => @picture.name, :type => @picture.content_type, :disposition=> "inline") end def picture @picture = Picture.find(params[:id]) end
model/picture
Et enfin la vue de la photo
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Picture < ActiveRecord::Base attr_accessible :desc, :name attr_protected :data,:content_type belongs_to :user def uploaded_picture=(picture_field) self.name = picture_field.original_filename self.content_type = picture_field.content_type.chomp self.data = picture_field.read end
view/show
Si vous arriviez à m'aider, ce serait super et m'aiderait grandement !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <h3><%= @picture.name %></h3> <img src="<%= url_for(@picture.id) %>" alt="<%=%>" />
Merci d'avance et très bon développement à vous!
Partager