使用下面的代码,当我尝试在调试器点使用我的代码时(尝试使用Song类的'rating'访问器),为什么我会得到
NoMethodError Exception: undefined method "rating" for #<Class:0xb3b7db04>
尽管Song.instance_methods
清楚地表明:rating
和:rating=
在列表中?
-
#songs_controller.rb
class SongsController < ApplicationController
def index
debugger
@ratings = Song.rating
end
end
-
#schema.rb
ActiveRecord::Schema.define(:version => 20111119180638) do
create_table "songs", :force => true do |t|
t.string "title"
t.string "rating"
end
end
-
#song.rb
class Song < ActiveRecord::Base
attr_accessor :rating
end
答案 0 :(得分:4)
在下面的代码中,您在Song上调用rating
这是一个类,这就是它抛出错误的原因。
Song.instance_methods
清楚地表明:rating和:rating =在Song类列表中作为实例方法。您可以在Song.new
实例上调用该方法,但不能在Song
类上调用。
你应该这样称呼评级方法:
@rating = Song.new.rating
Song.new.rating = "good"
取代这个:
@ratings = Song.rating
希望它会有所帮助。感谢