私はこれに頭を悩ませようとしていますが、それを理解できないようです。project
モデルとモデルを含むRailsアプリがありclient
ます。クライアントhas_many
のプロジェクトとクライアントのプロジェクトbelongs_to
。次のような 2 つのテーブルを結合するための移行を作成しました。
class AddClientsProjectsTable < ActiveRecord::Migration
def up
create_table :clients_projects do |t|
t.integer :client_id
t.integer :project_id
end
end
def down
drop_table :clients_projects
end
end
私がやろうとしているのは、プロジェクト ループ内のプロジェクト INDEX ビューでプロジェクトが属しているクライアントを表示することだけです。これは、プロジェクト コントローラーの show メソッドを使用して<% @project.clients.each do |client|%><%= client.name %><% end%>
、プロジェクトの SHOW ページで簡単に実行できます。@project = Project.find(params[:id])
しかし、そのようなインスタンス変数を index メソッドに追加してから、ループ内でそれを呼び出そうとしても<% @projects.each do |project| %>
うまくいきません!
プロジェクトのクライアント名をショーページに表示できるので、データが正しく保存されていることは少なくとも知っていますが、インデックスビューに表示することはできません。
それが役立つ場合、これは私がプロジェクトをクライアントに割り当てる方法です(プロジェクトのインデックスページを介して行われます):
<%= form_for @project, :html => { :multipart => true } do |f| %>
<% for client in Client.find(:all) %>
<%= check_box_tag "project[client_ids][]", client.id, @project.clients.include?(client) %>
<label><%= client.name %></label>
<% end %>
<%= f.submit %>
<% end %>
最後に、これはループ内のプロジェクト インデックス ページで、各プロジェクトがどのクライアントに割り当てられているかを示すためにいじっていたコードです。
<% Client.all do |client| %><%= client.name %><% end %>
うまくいきません!