为什么我在安装 PaperClip 时得到“has_attached_file"的“未定义方法"? [英] Why do I get an "undefined method for `has_attached_file` when installing PaperClip?
问题描述
我刚刚安装了 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'
它引用了 will_paginate gem.据我所知,我的 PostsController#index
似乎有问题,或者之前尝试安装 gem 而不是插件,在这种情况下,我已经阅读了我应该能够以某种方式通过 /config/environments.rb
文件进行补救.
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.
我不认为以前的 gem 安装会像我在安装插件之前丢弃的旧版本站点中那样重要.在该站点的当前版本中,我显示该表在迁移后已使用 Paperclip 列进行更新.这是我的代码:
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
后
模型:
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 %>
推荐答案
在安装新的 gems/插件后重新启动服务器非常重要.这应该可以解决您的问题
It is very important that you restart your server after installing new gems/plugins. This should solve your problem
这篇关于为什么我在安装 PaperClip 时得到“has_attached_file"的“未定义方法"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!