2016-07-12 43 views
0

我有一個視圖代碼:分組Rails中

<% @insurer.offices.includes(:city).order('cities.name asc').each do |office| %> 
    <div class="headline"> 
     <h4><%= office.city.name %></h4> 
    </div> 
    <p><%= office.name %></p> 
    <% end %> 

這個循環,我可以看到在這些城市的城市和辦事處之後,但城市正在重複這樣的:

New York: 
Office address 

New York: 
Other office address 

我需要顯示按城市分組的所有辦公室。我試圖 <% @insurer.offices.includes(:city).group('cities.name').order('cities.name asc').each do |office| %>,但它不起作用。 有沒有辦法做到這一點?謝謝。

回答

0

這篇它幫助:

<% @all_insurers.each do |city, office| %> 
    <div class="headline"> 
    <h4><%= city.name %></h4> 
    </div> 
    <% office.each do |city_office| %> 
    <%= city_office.name%> 
    <% end %> 
<% end %> 

在我insurers_controller:

def show 
    @insurer = Insurer.find(params[:id]) 
    @all_insurers = @insurer.offices.includes(:city).order('cities.name asc').group_by(&:city) 
end 
0

您的環路旨在爲您一次提供一個辦公室。即使城市被分組,當你有3個紐約辦公室時,它將運行3次循環。

爲了一個共同的城市標題下組的辦公室,你需要小組辦公室的城市,你的循環需要記住以前的城市,並顯示標題的城市化,只有當。

添加一個變量像previous_city(它可能需要使用零循環之前進行初始化),並顯示標題只有previous_city == office.city並在循環結束時,你可以做previous_city = office.city

另一件事,@insurer.offices.includes(:city).order('cities.name asc')應在控制器中定義的變量中。