0

嗨,我正在尝试使用 table_builder 显示在参与日期放映的电影列表,这是视图中的代码。

<%= calendar_for @showings, :year => @date.year, :month => @date.month do |calendar| %>
<%= calendar.head('Sun','Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat') %>
<%= calendar.day(:day_method => :date) do |date, showings| %>
<%= date.day %>
<ul>
<% for showing in showings %>
<%= link_to h(showing.film.title),showing%>
</br>
<% end %>
</ul>
<% end %>
<% end %>

该代码有效,但是如果一部电影在同一天放映多次,那么电影标题也会在同一日期的日历上多次打印出来。我真正想要的是找出一部电影是否已经在某一天放映,如果是,那么只显示那部电影的标题一次。任何想法我可能会如何去做。

显示控制器中的代码

def whats_on
@showings = Showing.all
@date = params[:month] ? Date.strptime(params[:month]) : Date.today
end

目前的关系

film - has_many :showings
showing - belongs_to :film
4

1 回答 1

0

你可以这样做:

 <% showings.group_by{|s| s.film.title}.each do |title, shows %>
    <%= link_to h(title), some_path %>
    <% shows.each do |s| %>
      <%= link_to s.something,s%>
    <% end %>
    </br>
 <% end %>

 def whats_on
   @showings = Showing.all(:include => :film)
   @date = params[:month] ? Date.strptime(params[:month]) : Date.today
 end
于 2013-03-02T20:10:35.963 回答