Pourquoi reçois-je un "undefined method for `has_attached_file` lors de l'installation de Trombone?
Je viens d'installer le plugin pour Trombone 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 will_paginate gem. De ce que je peux trouver, il semble que il ya quelque chose de mal avec mon PostsController#index
ou peut-être déjà essayer d'installer la gem à la place du plugin, dans lequel cas, je l'ai lu, je devrais être en mesure de remédier par le biais de la /config/environments.rb
fichier en quelque sorte.
Je ne pense pas que ce précédent gem installation de la matière comme je l'ai fait dans une vieille version du site que j'ai mis à la corbeille avant d'installer le plugin. Dans la version actuelle du site, je montre que le tableau a été mis à jour avec le Trombone colonnes 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
Post
modèle:
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 %>
- L'erreur provient de la PostsController méthode "show", mais vous avez la "index" de la méthode et le contenu de la "nouvelle" vue collé là? Nettoyer votre question à inclure les informations pertinentes, et il est plus probable que quelqu'un peut vous aider à comprendre cela.
- Aussi, je peux presque garantir que le plus grand indice il y a le fait que l'erreur est de référencement de Classe et pas de Post. Il devrait être assez évident une fois que nous voyons le code qui est en cause.
- juste mis à jour pour la méthode show. Désolé à ce sujet. De nouveau à tout cela. Merci pour la direction.
- veuillez accepter la deuxième réponse. il semble être une meilleure solution.
Vous devez vous connecter pour publier un commentaire.
Il est très important que vous redémarrez votre serveur après l'installation de nouvelles gemmes/plugins. Cela devrait résoudre votre problème
Je vous suggère d'installer un trombone, gem. Puis vous auriez juste besoin d'ajouter
config.gem 'paperclip'
à votre environnement.rb et exécutersudo rake gems:install
.créer le fichier de trombone.rb à l'intérieur de la config/initializers/trombone.rb
Ajouter les lignes ci-dessous et redémarrez le serveur
besoin de "trombone/railtie"
Trombone::Railtie.insérez
J'ai eu cette erreur spontanément sur 2 dev machines après Trombone fonctionnait bien pendant des semaines.
spring stop
puis redémarré ma console rails était nécessaire
Je suppose que cela devrait être évident, mais je suis en utilisant mongo/mongoid que ma couche de données et nécessaires à l'installation de mongoid trombone pour que cela fonctionne.