0

私のモデルは次のとおりです。

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])

「undefinedmethod`activities'」というエラーメッセージが表示されます。何が間違っていますか?

4

2 に答える 2

1

この行はエラーを引き起こします:

@activities = @cities.activities.find_all_by_homepage_city(true)

@ citys.activitiesを呼び出すことはできません。代わりに、次のようにします。

リージョンへの関連付けを通じてhas_manyを追加します

class Region < ActiveRecord::Base
  has_many :activities, :through => :cities
end

その後、電話をかけることができます:

@activities = @region.activities.find_all_by_homepage_city(true)
于 2012-08-13T21:27:15.157 に答える
0

@cityは別の場所に設定されていますか?ここのコードには表示されません。

コードを単純化してみます。@activities_restaurantsを両方ではなく@activitiesまたは@restaurantsだけに減らすと、どちらも機能しますか?

少なくとも始めましょう。

于 2012-08-13T21:16:04.597 に答える