2013-07-08 2 views
0

У меня есть модель под названием «Обувь», которая относится к модели под названием «История». Я хочу показать все туфли на странице History show.html.erb, но я хочу сгруппировать их по дате выпуска. (Для этого у меня есть атрибут, называемый release).Групповые сообщения по году - Rails

Я использую этот пример из Railscasts:

shoes_controller

def index 
    @shoes = Shoe.all(:order => 'release, name') 
    @release_year = @shoes.group_by { |t| t.release.beginning_of_year } 
end 

обувь index.html.erb вид

<% @release_year.each do |release, shoes| %> 
    <% shoes.each do |shoe| %> 
    <%= shoe.name %> 
    <% end %> 
<% end %> 

Я хочу, чтобы быть в состоянии сделать это, но на моем История show.html страница, как я могу это сделать?

То, что я до сих пор:

История show.html.erb

<% @history.shoes.each do |shoe| %> 
    <div class="shoe"> 
    <%= shoe.name %> 
    </div> 
<% end %> 

Спасибо.

ответ

0

Может быть, вы можете создать _shoes_by_year частичное в воззрениях обуви, а затем сделать коллекцию обуви:

просмотров/обувь/_shoe.html.erb

<div class=shoe> 
    <%= shoe.name %> 
</div> 

просмотров/обувь/_shoes_by_year .html.erb

<% shoes_by_year.each do |release_year, shoes| %> 
    <div> 
    <h3><%= release_year.year %></h3> 
    <%= render 'shoes/shoe', collection: shoes %> 
    </div> 
<% end %> 

histories_controller.rb

def show 
    ... 
    @shoes = @history.shoes.group_by { |shoe| shoe.release.at_beginning_of_year } 
end 

/views/history/show.html.erb

... 
<%= render 'shoes/shoes_by_year', object => @shoes %> 
+0

Спасибо за помощь! – ChrisBedoya

Смежные вопросы