2017-10-02 5 views
0

私はrailscasts tokenfield @ 258ビデオを改訂しています。それはレール3を使用しているように見えます。トークンフィールド - 定義されていないメソッド 'author_tokens' for#<book id:nil、name:nil、created_at:nil、updated_at:nil>

私が設定した後、私は多くの関連付けを行い、著者IDを '、'で区切ってしまいました。私はレール4.2.8のバージョンを使用しています。

エラー:

NoMethodError in Books#new

Showing /home/nicholas/labs/tokenfield-258/app/views/books/_form.html.erb where line #21 raised:

undefined method `author_tokens' for #

_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 

#created_atのための未定義メソッド `author_tokens 'としてエラーメッセージが表示されます:nil、updated_at:nil>

どうすればこの問題を解決できますか? 私はレール4.2.8のバージョンを使用しています。

+0

attr_readerを追加:book.rbのauthor_tokensが問題を解決しました。 – nekolus

答えて

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 
関連する問題