Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do I get an "undefined method for `has_attached_file` when installing PaperClip?

I just installed the plugin for Paperclip and I am getting the following error message but I am not sure why:

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' 

It is referencing the will_paginate gem. From what I can find, it seems that either there is something wrong with my PostsController#index or perhaps a previously attempt at installing the gem instead of the plugin, in which case I have read I should be able to remedy through the /config/environments.rb file somehow.

I didn't think that previous gem installation would matter as I did it in an old version of the site that I trashed before installing the plugin. In the current version of the site I show that the table has been updated with the Paperclip columns after migration. Here is my 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 model:

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 %> 
like image 812
bgadoci Avatar asked Apr 18 '10 03:04

bgadoci


1 Answers

It is very important that you restart your server after installing new gems/plugins. This should solve your problem

like image 167
Raunak Avatar answered Oct 05 '22 23:10

Raunak