0

私はこのサイトの助けを借りて多対多の関係を築いてきました。
モデルにhas_and_belongs_to_manyを追加しました。これで
、そのオブジェクトのデータを画面に表示したいと思います
。html.erbで行う必要が
あると思います。インデックスフォームと編集/新しいフォームで データを表示します。

どうすればそれを提示できますか?ありがとう。

編集:
私は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:ingredients

GUIのコードを更新するにはどうすればよいですか?感謝

4

3 に答える 3

1

このガイドをご覧ください:協会-多くの公式ガイドを持っており、所属しています

この関連付けにバインドされているモデル/リソースの名前がないと、私はあなたをさらに助けることはできません。より正確な回答が必要な場合は、それらを提供してください。

わかりました。質問を編集する前に回答してください。

したがって、PersonモデルとStatesモデルの間に「has_and_belong_to_many」の関連付けが必要です。したがって、「Person」モデルでは、has_and_belongs_to_many:statesを使用する必要があります。また、「状態」モデルには、has_and_belongs_to_many:people(複数形)が必要です。「has_and_belongs_to_many」アソシエーションを持つ結合テーブルは「people_states」である必要があります。これは慣例であるため、実際には選択できません。

また、役立つ情報が記載されている公式ドキュメントを確認することもできます。

于 2012-04-27T16:35:26.027 に答える
1

あなたが多くの州を持つことができる人を持っているなら、それは次のように簡単です:

モデルperson.rb

has_many :states

state.rb

belongs_to :person

生成する移行:

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

このperson_id外部キーをその人に追加する必要がある場合は、次のようにします。

rails generate migration Add_Person_ID_To_States person_id:integer
rake db:migrate

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

于 2012-04-27T17:25:58.153 に答える
1

Kulgarの答えは、関係の設定を扱っていますが、これは正しいことです。これらを配置すると、ビューに次のように情報を表示できます。

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

これは、クラス@personのインスタンスに設定する適切なコントローラーアクションがあることを前提としています。Person多分このようなもの:

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

さらに進んで、Stateクラスを表示するための部分的なビューを追加し、ビューでそれを参照することができます。

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

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

このすべての重要な部分は、@person.statesその人に関連付けられている状態を参照することです:)

于 2012-04-28T20:27:36.203 に答える