Почему я получаю неопределенный метод для has_attached_file при установке PaperClip? - PullRequest
52 голосов
/ 18 апреля 2010

Я только что установил плагин для 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'

Это ссылка на камень will_paginate. Из того, что я могу найти, кажется, что либо с моим PostsController#index что-то не так, либо, возможно, с предыдущей попыткой установить гем вместо плагина, и в этом случае я прочитал, что я смогу исправить с помощью /config/environments.rb подать как-нибудь.

Я не думал, что предыдущая установка gem будет иметь значение, так как я делал это в старой версии сайта, которую я удалил перед установкой плагина. В текущей версии сайта я показываю, что таблица была обновлена ​​со столбцами Paperclip после миграции. Вот мой код:

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 модель:

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 %>

Ответы [ 5 ]

177 голосов
/ 30 июля 2010

Очень важно перезагрузить сервер после установки новых гемов / плагинов. Это должно решить вашу проблему

8 голосов
/ 18 апреля 2010

Я бы предложил установить драгоценный камень для скрепки. Тогда вам просто нужно добавить config.gem 'paperclip' в ваш environment.rb и запустить sudo rake gems:install.

1 голос
/ 26 апреля 2017

Я получил эту ошибку самопроизвольно на 2 разных машинах разработчика после того, как Paperclip работал нормально в течение нескольких недель.

spring stop

затем перезапустил консоль моей рельсы была нужна

1 голос
/ 12 сентября 2015

создайте файл paperclip.rb внутри config / initializers / paperclip.rb

Добавьте следующие строки и перезапустите сервер

требуется "скрепка / рельс"

Paperclip :: Railtie.insert

0 голосов
/ 03 октября 2013

Полагаю, это должно было быть очевидно, но я использую mongo / mongoid в качестве слоя данных и мне нужно установить mongoid paperclip , чтобы он работал.

...