2012-12-18 46 views
0

我在下面提供了我的活動記錄。在view/users/show中,我想通過藍圖顯示用戶正在處理的任何項目。當用戶將多個藍圖添加到項目中時,項目會多次顯示。我嘗試了一些validate_uniqueness選項無濟於事。顯示多個相同記錄的導軌

class Blueprint < ActiveRecord::Base 
    attr_accessible :id, :name, :project_id, :user_id, :loc 
    belongs_to :user 
    belongs_to :project 
    has_many :comments 
end 

class Project < ActiveRecord::Base 
    attr_accessible :id, :name 
    has_many :blueprints 
    has_many :users, :through => :blueprints 
    has_many :comments 
end 

class User < ActiveRecord::Base 
    attr_accessible :id, :name 
    has_many :blueprints 
    has_many :projects, :through => :blueprints 
end 

這裏是顯示同一項目的多個值的視圖代碼。

<% @user.blueprints.each do |blueprint| %> 
     <tr> 
     <td><%= link_to blueprint.project.name, project_path(blueprint.project) %></td> 
     </tr> 
    <% end %> 

謝謝!

回答

2

嘗試在用戶的projects關係設定uniq選項true這樣

class User < ActiveRecord::Base 
    has_many :projects, :through => :blueprints, :uniq => true 
end 
+0

這沒有奏效。我現在正在探索選項。 –

+0

如果有幫助,我從視圖中添加了我的代碼。 –

+0

感謝您的幫助。當進一步移動時,我去解決另一端的相同問題,並意識到當我添加cgat的解決方案時,我意外地留下了修復程序。你們倆都幫助我的小白! –

1

既然你已經擁有的用戶,爲什麼通過用戶的項目,而不是藍圖你不循環的項目關聯。

<% @user.projects.each do |project| %> 
     <tr> 
     <td><%= link_to project.name, project_path(project) %></td> 
     </tr> 
    <% end %> 
+0

工作!現在我將花一些時間檢查爲什麼這給了我很多麻煩:? –

+1

你正在循環藍圖,因此,對於每個用戶的藍圖,都會產生一個鏈接,即使該鏈接一遍又一遍地重複。當你編寫'has_many:projects,通過::blueprints'時,你告訴rails你只需要該用戶的項目,並且爲了弄清楚用戶擁有哪些項目,請查看藍圖表。希望有助於澄清事情 – cgat

+0

它的確如此。我很好奇爲什麼我首先做到了這一點。謝謝你的幫助。 –