Tokenfields - 未定义的方法`author_tokens&#39;对于#<book id:=“”nil,=“”name:=“”nil,=“”created_at:=“”nil,=“”updated_at:=“”nil =“”>

时间:2017-10-02 16:53:38

标签: ruby-on-rails railscasts

我正在关注railscasts tokenfield修订版@ 258视频。看起来它使用rails 3.

在处理它的过程中,我在设置了很多通过关联并且将作者ID分成&#39;,&#39;后陷入困境。我正在使用rails 4.2.8版本。

错误:

  

Book#new

中的NoMethodError      

显示   /home/nicholas/labs/tokenfield-258/app/views/books/_form.html.erb   第21行提出的地方:

     

未定义的方法`author_tokens&#39;对于#

_form.html.erb

  <div class="field">
    <%= f.label :author_tokens, "Authors" %><br />
    <%= f.text_field :author_tokens, data: {load: @book.authors} %>
  </div>

books_controller.rb

def book_params
   params.require(:book).permit(:name,:author_tokens)
end

book.rb

class Book < ActiveRecord::Base
  has_many :bookauthors
  has_many :authors, through: :bookauthors

  def author_tokens=(ids)
    self.author_ids = ids.split(',')
  end

end

我收到错误信息为未定义的方法`author_tokens&#39; for#created_at:nil,updated_at:nil&gt;

有人可以帮我解决这个问题吗? 我正在使用rails 4.2.8版本。

1 个答案:

答案 0 :(得分:0)

错过了这一行attr_reader:author_tokens book.rb.现在它有效。

class Book < ActiveRecord::Base
  has_many :bookauthors
  has_many :authors, through: :bookauthors

  attr_reader :author_tokens

  def author_tokens=(ids)
    self.author_ids = ids.split(",")
  end

end