关系;无法从DB获取所有事件

时间:2012-08-29 21:09:37

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

我的模特是;

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'

1 个答案:

答案 0 :(得分: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