0

我的模型是;

class region
has_many :cities
end

class event
belongs_to :city
end

class city
has_many :events
belongs_to :region
end

事件控制器

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

页面:region/x/cities/x/events

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

问题:如何在我的 /region/events 页面上显示所有城市的所有事件?我创建了一个资源

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

但是我如何在事件控制器中定义“all_event”动作?

我不能在我的 eventcontroller @events = @cities.events 中执行此操作,因为 event 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”

4

1 回答 1

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
于 2012-08-29T21:19:46.950 回答