我的模特是:
class City < ActiveRecord::Base
belongs_to :region
has_many :activities
has_many :restaurants
end
class Activity < ActiveRecord::Base
belongs_to :city
end
在城市索引页面上,我想根据每个循环中的布尔值显示所有城市的活动和餐馆。
我的城市管制员:
def index
@region = Region.find(params[:region_id])
@cities = @region.cities
@activities = @cities.activities.find_all_by_homepage_city(true)
@restaurants = @city.restaurants.find_all_by_homepage_city(true)
@activities_restaurants = @activities + @restaurants
end
查看城市索引页
- @activities_restaurants.each do |b|
%li
=link_to b.name, polymorphic_path([@region, @city, b])
我收到错误消息“未定义的方法`活动'”我做错了什么?
答案 0 :(得分:1)
此行会导致错误:
@activities = @cities.activities.find_all_by_homepage_city(true)
您无法调用@ cities.activities,而是执行以下操作:
通过与Region
的关联添加has_manyclass Region < ActiveRecord::Base
has_many :activities, :through => :cities
end
然后你就可以打电话了:
@activities = @region.activities.find_all_by_homepage_city(true)
答案 1 :(得分:0)
@city是否设置在其他地方?在这里的代码中没有看到它。
我会尝试简化您的代码。如果你将@activities_restaurants减少到@activities或@restaurants,而不是两者,它们是否有效?
这至少可以让你开始。