我的模特是;
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 :(得分: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