2010-04-18 6 views
49

acabo instalado el plug-in para Paperclip y yo estoy recibiendo el siguiente mensaje de error pero no estoy seguro de por qué:?¿Por qué recibo un "método no definido para` has_attached_file` al instalar PaperClip

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' 

Es haciendo referencia a la gema will_paginate. Por lo que puedo encontrar, parece que o bien hay algo mal con mi PostsController#index o quizás un intento anterior de instalar la gema en lugar del plugin, en cuyo caso he leído que debería ser capaz de remediar a través del /config/environments.rb archivo de alguna manera.

No pensé que la instalación previa de la gema importaría ya que lo hice en una versión anterior del sitio que destruí antes de instalar el complemento. En la versión actual del sitio, muestro que la tabla se ha actualizado con las columnas Paperclip después de la migración. Aquí está mi código:

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 modelo:

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

El error proviene del método PostsController "espectáculo", pero que tenga el método de "índice" y el contenido de la "nueva" vista pegado allí? Limpie su pregunta para incluir la información relevante, y es más probable que alguien pueda ayudarlo a resolver esto. – jdl

+1

Además, casi puedo garantizar que la mayor pista es que el error hace referencia a la clase y no a la publicación. Debería ser bastante obvio una vez que veamos el código real que está fallando. – jdl

+0

recién actualizado para el método show. Lo siento por eso. Nuevo en todo esto. Gracias por la dirección. – bgadoci

Respuesta

172

Es muy importante que reinicie su servidor después de instalar nuevas gemas/complementos. Esto debería resolver su problema

+3

corrigió mi problema, +1 gracias –

+0

me arregló también +1 – Stu

+0

solucionó mi problema también y también fue con mongrel ... no estoy acostumbrado a usarlo, así que supongo que debes reiniciar mucho ese problema cuando cambias los complementos y/o configuraciones – pjammer

8

me gustaría sugerir la instalación de la gema clip. Entonces solo necesita agregar config.gem 'paperclip' a su environment.rb y ejecutar sudo rake gems:install.

+0

Eso funcionó. Muchas gracias. – bgadoci

+0

Funcionó para mí también; +1 –

+0

Hola ... Estoy usando Rails 2.0.2 y ruby ​​1.8.7 n Todavía me enfrento a este error ...He agregado un "clip" requerido en mi archivo environment.rb y he instalado paperclip 2.3.8 ya que my activerecord y activesupport son de la versión 2.0.2. ¿Alguna sugerencia sobre lo que puedo hacer para arreglar esto ...? ¿Hay alguna forma de que pueda obtener el complemento para clip? ... como alternativa, ya que estoy usando una versión anterior de rieles n complementos todavía funcionan. Escuché que thinkbot ha cerrado su representante de svn, ¿puedo de alguna manera obtenerlo a través de github ...? – boddhisattva

0

Supongo que esto debería haber sido obvio, pero estoy usando mongo/mongoid como mi capa de datos y necesito instalar mongoid paperclip para que funcione.

1

crear el archivo dentro de la paperclip.rb config/inicializadores/paperclip.rb

Añadir las líneas de abajo y reiniciar el servidor

requieren "clip/railtie"

Paperclip :: Railtie. inserte

1

Recibí este error de forma espontánea en 2 máquinas de desarrollo diferentes después de que Paperclip funcionara bien durante semanas.

spring stop

luego se reinicia era necesaria mi consola rieles

Cuestiones relacionadas