我有一个块我需要嵌套另一个块。或者我可能没有,我这样做完全错了。 有一个UNIT和UNIT有很多公司 然后公司有很多用户
在UNIT节目页面上我试图做这样的事情:<% @company.each do |c|%>
<%= c.name %>
<% ??? each do |f| %>
<p>
Name: <%= f.name %>
</p>
<% end %>
<% end %>
所以基本上对于每个公司我都会显示公司的名称,没有问题,但是我试图表明在每个公司内都有我列出的属于该公司的特定用户。我无法在控制器中定义,因为有多家公司。
该用户是: cc = @ user.find(:all,:conditions =&gt; [“position =?”,“公司指挥官”])
我不确定如何为每个公司循环,然后为该公司循环并列出该公司的特定用户。
很抱歉,如果我解释这个问题做得很差。我不确定这是否是正确的做法。
提前致谢。
答案 0 :(得分:2)
试试这个:
<% @company.each do |c| %>
<%= h(c.name) %>
<% c.users.each do |u| %>
<p>Name: <%= h(u.name) %></p>
<% end %>
<% end %>
答案 1 :(得分:1)
首先,您需要在模型中定义关系:
# Unit model
has_many :companies
has_many :users, :through => :companies
# Company model
has_many :users
belongs_to :unit
...
比你的单位控制器:
@unit = Unit.find(params[:id]) # or something similar
在你看来:
<% @unit.companies.each do |c|%>
<%= c.name %>
<% c.users each do |f| %>
<p>
Name: <%= f.name %>
</p>
<% end %>
<% end %>
答案 2 :(得分:0)
如果公司有很多用户,那么您应该只需要'company.users'来获取与该公司关联的用户列表。然后你可以循环或列出你喜欢的那些。
假设您在模型中设置关系,这就是活动记录为您设置这些关联的方式。
答案 3 :(得分:0)
您似乎希望列出与每家公司关联的“公司指挥官”位置的用户。
也许用户的命名范围会有所帮助:
class User < ActiveRecord::Base
...
named_scope :company_commanders, :conditions => "position = 'Company Commander'"
end
现在,您可以根据需要循环浏览它们。
<% @company.each do |c|%>
<%= c.name %>
<% c.users.company_commanders each do |f| %>
<p>
Name: <%= f.name %>
</p>
<% end %>
<% end %>
答案 4 :(得分:0)
这就是最终的工作:
named_scope :company_commanders, :conditions =>{:position => 'Company Commander'}
<% @company.each do |c| %>
<%= h(c.name) %><br />
<% if c.users.company_commanders.blank? %>
<%= link_to "Add this User", new_user_path %><br />
<% else %>
<% c.users.company_commanders.each do |u| %>
<p>Name: <%= h(u.name) %></p>
<% end %>
<% end %>
<% end %>
</p>