在每个循环中仅显示活动(布尔)项

时间:2012-07-30 10:22:34

标签: ruby-on-rails ruby-on-rails-3

这是我的循环。在我的地区页面上,我展示了所有有活动,活动等的城市

- @cities.each do |city|
    %li
     %h4.h6.icon_mappoint
      = link_to city.name, region_city_path(@region, city)
       %ul
         - city.events.each do |thing|
         %li
          = link_to event.name, region_city_event_path(@region, city, event)
       %ul
         - city.activities.each do |activity|
         %li
         = link_to activity.name, region_city_activity_path(@region, city, activity)

每个事件和活动模型在数据库中都有一个名为active的属性。 (布尔)。并且只想在视图中显示活动事件和活动。

我的控制器现在看起来像这样。

def show
    @region = Region.find(params[:id])
    @cities = @region.cities
end

模型

region has_many cities 
city has_many events, activities  

如何只显示每个循环中的活动事件和活动?

2 个答案:

答案 0 :(得分:2)

而不是city.events.each使用city.events.select { |x| x.active }.each

答案 1 :(得分:2)

如果您向EventActivity型号添加了范围

scope :active, where(:active => true)

你可以写下你的观点,如

city.events.active.each do |thing|

city.activities.active.each do |activity|