Je viens d'installer le plugin pour Paperclip et je reçois 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 gemme will_paginate. D'après ce que je peux trouver, il semble que soit il y a quelque chose de mal avec mon PostsController#index
ou peut-être une tentative antérieure d'installation de la gemme au lieu du plugin, auquel cas j'ai lu que je devrais pouvoir y remédier par l'intermédiaire de l'interface de l'utilisateur. /config/environments.rb
d'une manière ou d'une autre.
Je ne pensais pas que l'installation précédente des gemmes aurait de l'importance, car je l'ai fait dans une ancienne version du site que j'ai mise à la poubelle avant d'installer le plugin. Dans la version actuelle du site, je montre que le tableau a été mis à jour avec les colonnes 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
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 %>
0 votes
L'erreur provient de la méthode "show" du PostsController, mais vous avez collé la méthode "index" et le contenu de la vue "new" ? Nettoyez votre question pour inclure les informations pertinentes, et il est plus probable que quelqu'un puisse vous aider à résoudre ce problème.
1 votes
De plus, je peux presque garantir que le plus gros indice est le fait que l'erreur fait référence à Class et non à Post. Cela devrait être assez évident une fois que nous aurons vu le code réel qui échoue.
0 votes
Juste mis à jour pour la méthode du spectacle. Je m'en excuse. Je suis nouveau dans tout ça. Merci pour les conseils.