Carrierwave de la suppression du fichier
Je l'ai de nouveau besoin de votre aide. Maintenant, j'ai besoin de comprendre comment je peux le supprimer avec Carrierwave les fichiers téléchargés (dans mon cas des images).
modèles/pièce jointe.rb :
class Attachment < ActiveRecord::Base
belongs_to :attachable, :polymorphic => true
attr_accessible :file, :file
mount_uploader :file, FileUploader
end
modèles/post.rb :
class Post < ActiveRecord::Base
attr_accessible :content, :title, :attachments_attributes, :_destroy
has_many :attachments, :as => :attachable
accepts_nested_attributes_for :attachments
end
*views/posts/_form.html.erb :*
<%= nested_form_for @post, :html=>{:multipart => true } do |f| %>
<% if @post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>
<ul>
<% @post.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div id="field">
<%= f.label :Nosaukums %>:<br /><br />
<%= f.text_field :title %><br /><br />
</div>
<div id="field">
<%= f.label :Raksts %>:<br /><br />
<%= f.text_area :content %><br /><br />
</div>
<%= f.fields_for :attachments do |attachment| %>
<% if attachment.object.new_record? %>
<%= attachment.file_field :file %>
<% else %>
<%= image_tag(attachment.object.file.url) %>
<%= f.check_box :_destroy %>
<% end %>
<% end %>
<%= f.submit "Publicēt", :id => "button-link" %>
<% end %>
Lorsque j'essaie de supprimer précédent fichier téléchargé, j'ai cette erreur:
unknown attribute: _destroy
Peut-être il y a un problème parce que j'ai plusieurs fichier télécharge pas seul.
OriginalL'auteur RydelHouse | 2013-02-13
Vous devez vous connecter pour publier un commentaire.
Vous êtes à l'appel de la méthode sur le mauvais modèle. Votre fichier de montage est sur la pièce Jointe.
L'erreur est de vous dire ce qui est faux.
Le point clé de l'erreur est la méthode est appelée sur le modèle Post quand il a besoin d'être appelé sur le modèle de Fixation.
Peut-être essayer de portée de l'entrée de la case pour le bon modèle.
OriginalL'auteur Polygon Pusher
Rien de tout cela a fonctionné pour moi, mais en creusant, je suis tombé sur ce post qui m'a vraiment aidé. En fait...
Forme (où f est vos objets de formulaire):
Alors, si vous cochez la case et de soumettre le formulaire, vous obtiendrez l'erreur suivante:
Qui est facilement résolu en ajoutant simplement
remove_image
à votreattr_accessible
liste sur le modèle. À la fin, ça va ressembler à quelque chose comme:Dans mon cas, c'est une image de fond qui appartient à l'utilisateur. Espérons que cela aide 🙂
OriginalL'auteur gbdev
Selon la docs, la case doit être appelé
remove_file
.remove_file
j'ai cette erreur:undefined method 'remove_file' for #<Post:0x471a320>
Vous tentez d'appeler la méthode
remove_file
? Selon la documentation de la méthode est appeléeremove_file!
(notez le point d'exclamation).J'ai fait toutes ces choses, mais il y a erreur.
OriginalL'auteur Jiří Pospíšil
Il devrait être
<%= pièce jointe.check_box :_destroy%>
Il fonctionne pour moi
OriginalL'auteur Beena Shetty