【问题标题】:Tokenfields - undefined method `author_tokens' for #<Book id: nil, name: nil, created_at: nil, updated_at: nil>Tokenfields - #<Book id: nil, name: nil, created_at: nil, updated_at: nil> 的未定义方法“author_tokens”
【发布时间】:2018-03-13 19:05:03
【问题描述】:

我正在关注 railscasts tokenfield 修改后的 @258 视频。看起来它使用rails 3。

在处理它时,在我设置了很多通过关联并将作者 ID 拆分为“,”后,我陷入了困境。我使用的是 rails 4.2.8 版本。

错误:

书籍中的 NoMethodError#new

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

用于#的未定义方法`author_tokens'

_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' for # created_at: nil, updated_at: nil>

谁能帮我解决这个问题? 我使用的是 rails 4.2.8 版本。

【问题讨论】:

  • 在 book.rb 中添加 attr_reader :author_tokens 解决了这个问题。

标签: ruby-on-rails railscasts


【解决方案1】:

错过了这一行 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多