2012-08-29 36 views
0

我的模型是;关系;无法从数据库获取所有事件

class region 
has_many :cities 
end 

class event 
belongs_to :city 
end 

class city 
has_many :events 
belongs_to :region 
end 
Eventcontroller

def index 
    @region = Region.find(params[:region_id]) 
    @cities = @region.cities 
    @city = City.find(params[:city_id]) 
    @events = @city.events 
    @events_by_date = @events.group_by(&:start_on) 

    end 

页: 区域/ X /城市/ X /事件

显示来自城市的所有事件。

问题:如何显示我/地区/活动页面上所有城市的所有活动?我创建了一个资源

resources :regions do 
    resources :events do 
    collection do 
    get 'all_events' 
    end 
end 

但是,我如何在eventcontroller中定义“all_event”动作?

我无法在我的eventcontroller @events = @ cities.events中执行此操作,因为事件belongs_to:city。有没有解决方案?

我尝试这样做:

控制器:

@region = Region.find(1) 
@events = Event.includes(:city) 
@events_by_date = @events.group_by(&:published_on) 

查看:

%ul.property_list 
        - @events_by_date[date].each do |event| 
        %li.restaurant 
         %span.icon 
         %h5 
         = link_to event.title, polymorphic_path([@region, event.city.name, event]) 

错误:未定义的方法`region_Assisi_event_path”

+0

只是使它event.city在多态路径 –

+0

thanks.Kyle!..它作品..:包括是伟大的功能! – Remco

回答

1

如果我理解正确这一切,你会需要做的:

在你的控制器

def all_events 
    @events = Event.includes(:city) 
    end 

那么在你看来,使用块访问所有的情况下

@events.each do |event| 
     event.name 
     event.city.name #not sure if you have a name attribute 
+0

我需要我的链接的地区,城市和事件的值。像this = link_to event.title,polymorphic_path(@region,@city,event) – Remco

+0

你需要显示哪些数据?我仍然不确定需要查询什么 –

+0

我想显示所有城市的所有事件的一个页面..指向正确的/地区/ x /城市/活动/ ID路径的链接... – Remco