Właśnie zainstalowałem wtyczkę do spinacza i otrzymuję następujący komunikat o błędzie, ale nie jestem pewien, dlaczego?Dlaczego uzyskać „niezdefiniowanej metody` has_attached_file` podczas instalowania spinacza
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'
Jest odwołuję się do woli_przypominać klejnot. Z tego, co mogę znaleźć, wynika, że albo coś jest nie tak z moją PostsController#index
, albo może wcześniejszą próbą zainstalowania klejnotu zamiast wtyczki, w którym to przypadku przeczytałem, że powinienem być w stanie zaradzić /config/environments.rb
plik w jakiś sposób:
Nie sądziłem, że poprzednia instalacja klejnotu będzie miała znaczenie, ponieważ zrobiłem to w starą wersję strony, którą wyrzuciłem do kosza przed zainstalowaniem wtyczki. W aktualnej wersji strony pokazuję, że po migracji migracja tabeli została zaktualizowana za pomocą kolumn Spinacza. Tu jest mój kodu:
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 %>
Błąd pochodzi z PostsController „show” metoda, ale masz „index” metoda i treść „nowej” widzenia wkleić tam? Uporządkuj swoje pytanie, dołączając odpowiednie informacje, a bardziej prawdopodobne jest, że ktoś może Ci w tym pomóc. – jdl
Ponadto mogę prawie zagwarantować, że największą wskazówką jest fakt, że błąd odwołuje się do klasy, a nie do posta. Powinno być dość oczywiste, gdy zobaczymy faktyczny kod, który się nie udaje. – jdl
właśnie zaktualizowano dla metody show. Przepraszam za to. Nowość w tym wszystkim. Dzięki za kierunek. – bgadoci