我遇到了多態關聯問題。Rails多態關聯錯誤
關於我的項目的快速說明。你可以在這裏看到:majorfinder.com在我的應用程序將有專業,學校和職業。我希望能夠爲每個評論添加評論。因爲我剛剛開始,我剛剛開始爲專業增加評論,但創建了這個協會,以便當我到達職業和學校時,評論協會將會很快進行。
這裏是我的協會:
型號/ review.rb
belongs_to :user
belongs_to :reviewable, polymorophic: true
型號/ user.rb
has_many :reviews
型號/ major.rb
has_many :reviews, as: :reviewable
我評論的數據庫模式看起來像這樣的:
create_table "reviews", :force => true do |t|
t.text "review"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "user_id"
t.integer "reviewable_id"
t.string "reviewable_type"
end
在我的專業控制器我爲了創建一個URL,看起來像這樣www.majorfinder.com/majors/major-name其次this railscast。所以,我的專業控制器的部分看起來像這樣:
def show
@major = Major.find_by_slug(params[:id]).includes(:reviews => :user)
end
在我的專業顯示的網頁我有:
<% @reviews.each do |review| %>
<div>
<h3><%= link_to review.review,
:controller => "reviews", :action => "show", :id => review.id %></h3>
<small>Posted on <%= review.created_at %> by
<a href="#"><%= review.user.profile_name %></a></small>
</div>
<% end %>
最後,這裏是我的路線:
resources :majors, has_many: :reviews
我收到以下錯誤:
NoMethodError in MajorsController#show
undefined method `includes' for #<Major:0x007f9466e001a8>
這是從控制檯:
Started GET "/majors/statistics" for 127.0.0.1 at 2013-03-05 07:45:01 -0700
Processing by MajorsController#show as HTML
Parameters: {"has_many"=>:reviews, "id"=>"statistics"}
Major Load (24.2ms) SELECT "majors".* FROM "majors" WHERE "majors"."slug" = 'statistics' LIMIT 1
CACHE (0.0ms) SELECT "majors".* FROM "majors" WHERE "majors"."slug" = 'statistics' LIMIT 1
Completed 500 Internal Server Error in 28ms
NoMethodError (undefined method `includes' for #<Major:0x007f8ad51fdd00>):
app/controllers/majors_controller.rb:16:in `show'
在majors_controller.rb文件第16行是這個:
@major = Major.find_by_slug(params[:id]).includes(:reviews => :user)
你能看到我失去了什麼,或者我應該改變?看起來解決方案很簡單,但我不確定它是什麼。在此先感謝您的幫助!
你的問題很明顯:'包括'方法沒有爲主要實例定義。我不太確定你的問題的解決方案是什麼。你是從例子中得到的嗎?你想用這個方法調用做什麼? – drewinglis 2013-03-05 22:19:15