2016-04-18 8 views
1

こんにちは皆私はチュートリアルに従っていました。私は自分の記事とカテゴリの間に多くの関連付けを作成しようとしていましたので、アソシエーションmany_many NoMethodError:nil:NilClassの未定義メソッド `name '

rails g model article_category article_id:integer category_id:integer 

と私はarticle.rb内部

belongs_to :article 
belongs_to :category 

を入力したこのモデル内部:

has_many :article_categories 
has_many :categories, through: :article_categories 

とcategory.rb内側:

has_many :article_categories 
has_many :articles, through: :article_categories  

ので、私はコンソールに行きました:次のように入力して関連付けるために:私はarticle.categoriesに

#<ActiveRecord::Associations::CollectionProxy []> 

を確認

Article.all 
Article.first 

広告をし、私もカテゴリで試しました

category.all 
category.first 

と結果だった:

category 
=> #<Category id: 6, name: "sport", created_at: "2016-04-11 06:41:25", updated_at: "2016-04-11 06:41:25"> 
article 
=> #<Article id: 25, title: "kkkk", description: "lll", created_at: "2016-04-13 07:32:38", updated_at: "2016-04-13 07:32:38", user_id: 21> 

ので、私は次のように入力して、このカテゴリーのこの記事の一部を作ってみました:

category.articles << article 

ので、私はこのエラーを得た:

INSERT INTO `article_categories` (`article_id`, `category_id`, `created_at`, `updated_at`) VALUES (25, 6, '2016-04-18 09:06:58', '2016-04-18 09:06:58') 
    (12.9ms) ROLLBACK 
NoMethodError: undefined method `name' for nil:NilClass 

this is the errorを 任意のアイディアの男 ありがとう

category controller

application controller

category controller

+0

を添加しているかどうかを確認することができますが、この結果を過ぎてくださいすることができます: 'category.errors.full_messages'? –

+0

それはちょうど私に空のハッシュを与える[] –

+0

これは奇妙です! 'article.categories << category'をチェックしようとしましたか?試して結果を投稿してください... –

答えて

0

ご参加モデルの(article_category)移行に索引を追加してみてください。

add_index :article_categories, :article_id 
add_index :article_categories, :category_id 

私に知らせていない場合、それは問題を解決するはずです。

+0

いいえ動作しません –

0

お試しくださいcategory.article_ids << article_ids

多くの場合、私はあなたが望むオブジェクト全体ではなくidを保存する_idsを使用できると考えています。

、あなたはcategory.articlesにアクセスし、記事が実際に

+0

ローカル変数またはメソッドが定義されていませんmain:Object –

+0

ここにサンプルをコメントできますか'category.articles'の出力?ありがとう。 このリンクを確認することができます http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html と "has_many"のサンプル部分を参照してください。 それは_idsヘルパーを追加すると言います。 –

+0

それ以外の場合はすべて失敗した場合は、railsサーバを再起動してみてください –

関連する問題