2016-08-16 18 views
0

私は、信頼関係に属するサイトを表示するReact-Railsアプリケーションを持っています。2つのモデルからのデータをRailsの1つのテーブルに含めます

両方のモデルのデータを1つのテーブルに表示する方法が混乱しています。特に、サイトのテーブルでは、各サイトの信頼名の列を含める必要があります。

サイトと信頼モデルでは、belongs_toとhas_manyを追加しました。

私がRailsコンソールに入っているとき、私はsite.trust.nameから各サイトの信頼名にアクセスできます。

しかし、SitesController内では、インデックスアクション内でその情報にアクセスする方法が混乱しています。以下

それが今であるようなコードである:私は、マップ機能を介して反応させ、アプリと別個各部位に@sitesを通過する際

def index 
    @sites = Site.all 

    respond_to do |format| 
     format.html 
     format.json { render json: @sites } 
    end 
end 

しかし、それは未定義であるとsite.trust見出します。

@sites経由で信頼(trust.name)にアクセスするにはどうすればよいですか?お使いのコントローラで

+1

あなただけのサイトの記録をフェッチ見、あなたが熱心なロードを使用する必要があります。 @sites = Site.includes( :trusts) – Typpex

答えて

0

includesを使用して

def index 
    @sites = Site.includes(:trust) 

    respond_to do |format| 
    format.html 
    format.json { render json: @sites } 
    end 
end 

を追加するには、(すべてのsiteオブジェクトのデータベースを照会)N + 1クエリ問題を回避することができます。より多くの場合

http://apidock.com/rails/ActiveRecord/QueryMethods/includes

そして、あなたのビューでhttps://www.sitepoint.com/silver-bullet-n1-problem/は、

ここ
<% @sites.each do |site| %> 
    <!-- display site's properties --> 
    <%= site.trust.name %> 
<% end %> 
+0

ありがとう、アルン!私はちょうどそれを試みました、そして、私は今、 "ActiveRecord :: AssociationNotFoundError in Sites#index - Associationに 'trusts'という名前のアソシエーションが見つかりませんでしたというエラーメッセージが表示されます。しかし、私のモデルでは、サイトはtrust_and trust_manyサイトに属しています。この協会を設立するために必要な場所は他にありますか? –

+0

私の悪いです。関係の名前を 'includes'に渡します。私は答えを更新しました。私はそれをテストしていない。それが動作するかどうか私に教えてください。 –

関連する問題