0

これが私のループです。私の地域ページでは、活動やイベントなどを含むすべての都市を表示しています

- @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)

各イベントおよびアクティビティ モデルには、アクティブと呼ばれる DB 内の属性があります。(ブール値)。また、アクティブなイベントとアクティビティのみをビューに表示したいと考えています。

私のコントローラは今このように見えます。

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

モデル

region has_many cities 
city has_many events, activities  

各ループでアクティブなイベント、アクティビティのみを表示するにはどうすればよいですか?

4

2 に答える 2

2

EventおよびActivityモデルにスコープを追加する場合

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

あなたは次のようにあなたの意見を書くことができます

city.events.active.each do |thing|

city.activities.active.each do |activity|
于 2012-07-30T10:33:37.637 に答える
2

city.events.each使用する代わりにcity.events.select { |x| x.active }.each

于 2012-07-30T10:27:47.480 に答える