0

私はこのサイトの助けを借りて多くの関係を確立しました。私はモデル
にhas_and_belongs_to_manyアソシエーションを追加した今、私は、画面
にそのオブジェクトからのデータを表示したい私はhtml.erb
でそれを行う必要があると仮定し
は、私はインデックス形式にし、それを望んでいることを言うことができます編集/新規フォームruby​​ on rails - 多対多の接続を確立した後 - どのようにデータを表示するのですか?

どうすればよいですか?ありがとう。

EDIT:
私は2つのオブジェクトがあります。
すなわち人をと述べている - 人は多くの州を持つことができます)
私は私の人と別の画面のすべての状態を提示することができ、画面を持つようにしたいです彼に別の州を加えることができます。
私は(両方のための)このようなRBのスクリプトを作成したように

class CreateStates < ActiveRecord::Migration 
def change 
    create_table :states do |t| 
    t.string :name 
    t.timestamps 
    end 
end 
end 

と結合表

def up 
    create_table 'persons_states', :id => false do |t| 
    t.integer :persons_id 
    t.integer :states_id 
end 

エンド とモデルにhas_and_belongs_to_manyアソシエーションを追加しました:成分私はどのように

ther guiの私のコードを更新しますか? 、私はさらにあなたを助けることができないAssociations - Has and belong to many official guide

この関連付けを結合させた、モデル/リソースの名前なし: は、あなたがこのガイドを見てみる必要があります

+0

に関連付けられている状態を指しますということです。それ以外の場合は、代わりに 'has_many'と' belongs_to'を使いたいかもしれません。あなたの質問からこれを示唆しないことを、どうやって知ることができますか? – Jonathan

+0

ありがとう - いくつかのデータを追加しました – Jeb

+0

'' states 'の目的が理解できません。あまりにもあいまいです。質問にデータを追加したにもかかわらず、まだあいまいです。 'origin_id'や' ingredient_id'があなたの 'states'テーブルにどのように関係しているのか分かりません。レールでは、モデルにリレーションシップを設定します。誰かがあなたにアソシエイションガイドを読むための簡単な答えを提供することができます。彼にはうってつけで、アップフォート(私からではありません)を得るかもしれませんが、あなたの質問にはもっと努力が必要です。 – Jonathan

答えて

1

クルガーの答えは、関係を設定することを扱いますが、それは正しいです。これは、あなたがPersonクラスのインスタンスに@personを設定し、適切なコントローラのアクションを持っていると仮定し

<%= @person.name %> 
<ul> 
    <% @person.states.each do |state| %> 
    <li><%= state.name %></li> 
    <% end %> 
</ul> 

:あなたのビューで、次のような場所でそれらを使用すると、情報を表示することができます。たぶん、このような何か:

def show 
    @person = Person.find(params[:id]) 
end 

あなたがさらに進み、Stateクラスを表示するための部分的なビューを追加し、ちょうどあなたのビューで参照できます。

<%= @person.name %> 
<% @person.states.each do |state| %> 
    <%= render state %> 
<% end %> 

これはに_state.html.erb使用します。パーシャルをレンダリングし、ローカル変数状態を渡します。このすべてで

重要な部分は@person.statesは、私はあなたが関係が設定されている方法の詳細を表示する必要があると思う人:)

1

に感謝します。より正確な回答が必要な場合は、それらを提供してください。

質問を編集する前にお答えしました。

PersonモデルとStatesモデルの間に「has_and_belong_to_many」関連付けが必要です。だからあなたの "人物"モデルではあなたが持っている:has_and_belongs_to_many:states。そして、あなたの "州"モデルであなたは持っている必要があります:has_and_belongs_to_many:人々(複数の人)。 "has_and_belongs_to_many"の関連付けがあるjoinテーブルは "people_states"でなければなりません。これは規約であるため、選択肢はありません。

official documentationにも役立つ情報があります。

+0

ありがとう - いくつかのデータを追加しました – Jeb

+0

Railsがどのように複数の "人"と協調して動作するかはわかりません。私は人の複数が人であることを知っていることを願っています。モデルやコンベンションを扱うとき、それはわかりません。 – Kulgar

+0

私は彼がこのシナリオでは参加表を本当に望んでいるとは思っていませんが、彼がそれをどのように使うべきか説明するためにソリューションを編集する投票を1つ投票します – Jonathan

1

あなたは多くの州を持つことができる人を持っている場合、それは同じくらい簡単です:

モデル person.rb

has_many :states 

状態。RB

belongs_to :person 

あなたが生成する移行:あなたは人にこのperson_id外部キーを追加する必要がある場合

rails generate model State person_id:integer name:string 
rails generate model Person name:string 

だけで実行します。

rails generate migration Add_Person_ID_To_States person_id:integer 
rake db:migrate 

has_and_belongs_to_manyの必要は通常ありません。

+1

ねえ、あなたの権利、私はこの解決策について考えるべきだった!あなたの答えにも投票します。 ;) – Kulgar

+1

国家間で状態を共有できない限り。たとえば、州が米国の州であり、人々が訪問した州の歴史を構築しようとしている場合、has_and_belongs_to_many関係が意味を成しています。 –

+0

私はその例のおかげで好きです。私は解釈が何であるかは彼に任されている – Jonathan

関連する問題