Je suis nouveau sur les rails et je travaille sur mon premier petit projetHas_Many_Through & Active_Record_Collection_Proxy erreur
J'ai 3 modèles dans mon application Rails:
restaurant < - (modèle maître)
Menu < - (se rapporte directement au restaurant, le restaurant ne peut avoir qu'un menu)
Articles < - (se rapporte directement au menu, menu a de nombreux articles)
J'ai des difficultés à mettre en place des associations & je n'arrive pas à faire les choses correctement. Mes modèles sont les suivants:
class Restaurant < ApplicationRecord
has_one :menu
has_many :items, through: :menus
class Menu < ApplicationRecord
belongs_to :restaurant
has_many :items
class Item < ApplicationRecord
belongs_to :menu
Lorsque je tente de rendre une vue partielle sur la page en appelant les classes I get "
méthode non définie des éléments pour # Menu :: ActiveRecord_Associations_CollectionProxy : 0x3a74d08>
Ce que je fais par:
<%= render @menus%>
<%= render @items %>
J'ai réussi à afficher partiellement le MENU, mais l'affichage des éléments renvoie l'erreur de méthode non définie.
Voici mon contrôleur de restaurant:
def show
@menus = Menu.where(:restaurant_id => @restaurant.id)
@items = Item.where(:menu_id => @menus.id)
end
J'ai passé beaucoup de temps à essayer d'ajuster les associations sans chance. Je vous remercie.
pourrait être dans votre instruction if. Vous appelez '@ menus' mais vous ne voulez appeler qu'un seul '@ menu' pour obtenir les éléments de ce menu spécifique. Si vous avez plusieurs 'menus', alors vous devriez faire une boucle sur ceux-ci et ensuite appeler' .items' pour chaque instance de 'menu'. Dans ce scénario, vos 'render @ items' devraient probablement être' render @ menu.items' parce que de ce fait, il ne semble pas que '@ items' soit défini. – user3366016
Afficher où vous déclarez @menus –
Restaurant Controller = def show @menus = Menu.where (: restaurant_id => @ restaurant.id) fin –