2017-02-01 11 views
0

私はいくつかの記事を表示しようとしています。記事は2つのモデル(Article、ArticlesHistory)で構成されています。 今、記事の履歴の列を表示できないという問題が残っています。子モデルオブジェクトを取得できないのはなぜですか?

はここコントローラー

def show 
    binding.pry 
    @article = Article.find(params[:id]) 
    @article = Article.get_article(article_id: params[:id], version: @article.current_version) 
    end 

はここでモデル

class Article < ApplicationRecord 
    has_many :article_histories 
    has_many :article_images 
    belongs_to :user 
    accepts_nested_attributes_for :article_histories 

    scope :get_article, -> (id, version){ joins(:article_histories).merge(ArticleHistory.select_version(id, version))} 
end 

class ArticleHistory < ApplicationRecord 
    belongs_to :article 

    scope :select_version, -> (id, version){ where("article_id = ? and version = ?", id, version) } 

end 

だだし、これは、ビュー(.slim)です。

h1 = @article.article_histories.title 
h2 = t :content 
[email protected]_safe 
h3 = t :category 

アルジェントです。お願い助けて。

@article = Article.find(params[:id]) 
@article = Article.where(id: params[:id]).includes(:article_histories).where(article_history: {version: @article.current_version}) 
+1

投稿したエラーを投稿する – jithya

+0

ありがとう!トピックに関するエラーを追加しました。 –

答えて

0

のようなものです。

@article.first.article_histories.first.title

正しい答えです。オブジェクトは配列を返します。

+0

ありがとう!あなたが書いたように私は試みました。残念ながら、エラーは次のように表示されます。 '定義されていないメソッド' article_histories '' この行がエラーの原因です。 'h1 = @ article.article_histories.title' –

+0

' article_histories'は配列です。それをループする必要があります。配列に 'title'はありません。 – Iceman

+0

いいえ、それは配列ではないようです。物は 'article_history'や' article_histories'で値を取ることができません。上記の最初の行が動作しています。なぜ2行目が適切な価値を持たないのですか? –

0

が、私は私の問題を解決:

[付録] エラーメッセージは、以下試してみてください。この

NoMethodError undefined method 'article_histories'

関連する問題