导致这种无方法错误的原因是什么?

时间:2014-12-22 16:07:15

标签: ruby ruby-on-rails-3

我已经准备好了这段代码。目标很简单 - >添加一本新书,然后调用描述方法,该方法应该产生“标题由作者写”

但是当我运行它时,我得到了

NoMethodError: undefined method `set_title_and_author' for #

出了什么问题?

class Book
 def set_title_and_author=(title, author)
   @title = title
   @author = author
 end

 def description
   print "#{title} is wrtten by #{author}" 
 end
 end

book = Book.new
book.set_title_and_author("The hunger games", "Larry Page")
book.description

1 个答案:

答案 0 :(得分:2)

你是否覆盖了=运算符,但之后没有调用它..

def set_title_and_author(title, author)
   @title = title
   @author = author
 end

可能就是你想要的。

通常您会使用=方法来构建客户attr_writer。比如

  def author=(author)
     @author = author.capitalize
  end

或类似的东西(上面强制举例)