Je viens d'installer le plug-in pour Paperclip et j'obtiens le message d'erreur suivant, mais je ne sais pas pourquoi:
NoMethodError (undefined method `has_attached_file' for #<Class:0x10338acd0>):
/Users/bgadoci/.gem/Ruby/1.8/gems/will_paginate-2.3.12/lib/will_paginate/Finder.rb:170:in `method_missing'
app/models/post.rb:2
app/controllers/posts_controller.rb:50:in `show'
Il fait référence à la gem will_paginate. D'après ce que je peux trouver, il semble qu'il y ait un problème avec mon PostsController#index
ou peut-être une tentative antérieure d'installation de la gemme à la place du plug-in. Dans ce cas, j'ai lu que je devrais pouvoir remédier par le biais du fichier /config/environments.rb
.
Je ne pensais pas que l'installation de la gemme précédente aurait de l'importance, comme je l'avais fait dans une ancienne version du site que j'avais détruite avant d'installer le plugin. Dans la version actuelle du site, je montre que la table a été mise à jour avec les colonnes de Paperclip après la migration. Voici mon code:
PostsConroller#show
:
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @post }
end
end
modèle Post
:
class Post < ActiveRecord::Base
has_attached_file :photo
validates_presence_of :body, :title
has_many :comments, :dependent => :destroy
has_many :tags, :dependent => :destroy
has_many :votes, :dependent => :destroy
belongs_to :user
after_create :self_vote
def self_vote
# I am assuming you have a user_id field in `posts` and `votes` table.
self.votes.create(:user => self.user)
end
cattr_reader :per_page
@@per_page = 10
end
/views/posts/new.html.erb
:
<h1>New post</h1>
<%= link_to 'Back', posts_path %>
<% form_for(@post, :html => { :multipart => true}) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
<p>
<%= f.label :body %><br />
<%= f.text_area :body %>
</p>
<p>
<%= f.file_field :photo %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
Il est très important que vous redémarriez votre serveur après avoir installé de nouveaux plugins/gems. Cela devrait résoudre votre problème
Je suggèrerais d'installer Paperclip gem. Ensuite, il vous suffira d’ajouter config.gem 'Paperclip'
à votre environment.rb et d’exécuter Sudo rake gems:install
.
J'ai eu cette erreur spontanément sur 2 machines de développement différentes après que Paperclip ait fonctionné correctement pendant des semaines.
spring stop
puis redémarré ma console Rails était nécessaire
créer le fichier Paperclip.rb dans config/initializers/Paperclip.rb
Ajoutez les lignes ci-dessous et redémarrez le serveur
nécessite "trombone/rail"
Paperclip :: Railtie.insert
Je suppose que cela aurait dû être évident, mais j'utilise mongo/mongoid comme couche de données et je dois installer mongoid Paperclip pour que cela fonctionne.