我试图解决这个问题,但似乎无法弄清楚。所以我有一个带有project
模型和client
模型的 Rails 应用程序。一个客户has_many
项目,一个项目belongs_to
一个客户。我创建了一个迁移来加入两个表,如下所示:
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
我要做的就是在项目循环内的项目索引视图上显示项目属于哪个客户端。我可以通过项目控制器的 show 方法在项目的 SHOW 页面<% @project.clients.each do |client|%><%= client.name %><% end%>
上轻松完成此操作。@project = Project.find(params[:id])
但是将这样的实例变量添加到索引方法然后尝试在<% @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 %>
它不起作用!