Couchrest_modelをRails ORM to CouchDBとして使用しています。私は、Railsに2つの異なるCouchDBドキュメントからの情報の "結合"を行い、Railsに結合されたデータを自動取得させることはできません。2つのCouchDBモデルの情報をRailsビューに結合する
class Package < CouchRest::Model::Base
belongs_to :vendor
property :shortcode, String
property :pins, Integer
end
class Vendor < CouchRest::Model::Base
property :vendor, String
timestamps!
end
だから、今/パッケージのための私のindex.html.erbに私は私の2つのモデルからのデータを持つテーブルを表示したい:
<h1>Listing packages</h1>
<table>
<tr>
<th>Shortcode</th>
<th>Pins</th>
<th>Vendor</th>
<th></th>
</tr>
<% @packages.each do |package| %>
<tr>
<td><%= package.shortcode %></td>
<td><%= package.pins %></td>
<td><%= package.vendor %></td>
<td><%= link_to 'Show', package %></td>
<td><%= link_to 'Edit', edit_package_path(package) %></td>
<td><%= link_to 'Destroy', package, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New Package', new_package_path %>
ここ
は、二つの関連のモデルです
ベンダーモデルからベンダーの文字列を表示したい。セレクタヘルパーをビューに使用して、CouchDBを使用してモデル間で「結合」情報を表示しましたが、ビューテーブルに文字列を印刷するだけのシンプルなケースでは、どのように結合するかわかりません。
はここでかなり標準であるインデックスに対応パッケージコントローラです:
class PackagesController < ApplicationController
# GET /packages
# GET /packages.json
def index
@packages = Package.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @packages }
end
end
私は標準
@packages = Package.all(:include => :vendor)
をやってみたけどCouchrest_modelは、ベンダ情報に引っ張っていませんその通りです...
私が考えることができる最も単純な解決策は、これを行うことでした。<%= Vendor.get(package.vendor_id).vendor%>。私はこれが最良の "Railsの方法"であるかどうかはわかりませんが、それは機能します。他の誰かがより良い(つまりよりクリーンな)ソリューションを持っているなら、私は小切手でそれらを授与すること以上に満足しています! – Sly