내가 레일에 새로운 오전 내 첫 번째 작은 프로젝트를 진행하고Has_Many_Through & Active_Record_Collection_Proxy ERROR
내 레일 애플 리케이션의 3 개 모델을 가지고 - (식당과 직접적으로 관련이 있고, 식당은 1 개의 메뉴 만 가질 수 있습니다)
항목 < - (메뉴와 직접 관련이 있고, 메뉴가 많은 항목이 있습니다)
연결을 설정하는 데 문제가 있습니다. & 바로 문제가 해결되지 않는 것 같습니다. 다음과 같이 내 모델은 다음과 같습니다 : 나는 클래스를 호출하여 페이지에 부분 뷰를 렌더링 할 때
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
나는 # 메뉴에 대한 ' "
정의되지 않은 메서드`항목을 얻을 :: ActiveRecord_Associations_CollectionProxy :
: 내가으로하고있어 0x3a74d08><%= render @menus%> <%= render @items %>
MENU 부분을 성공적으로 표시했지만 항목을 표시하면 정의되지 않은 메소드 오류가 발생합니다. 나는 행운으로 연결을 조정하기 위해 많은 시간을 투자 한
def show
@menus = Menu.where(:restaurant_id => @restaurant.id)
@items = Item.where(:menu_id => @menus.id)
end
:
여기 내 레스토랑 컨트롤러입니다. 고맙습니다.
은 if 문에있을 수 있습니다. '@ menus'를 호출하고 있지만 특정 메뉴에 대한 항목을 가져 오기 위해 오직 하나의'@ menu' 만 호출하기를 원할 것입니다. 실제로 여러 개의 메뉴가 있다면 그 메뉴를 반복하여'menu .'의 각 인스턴스에 대해'.items '를 호출해야합니다. 이 시나리오에서'render @ items'는'render @ menu.items' 일 것입니다. 왜냐하면'@ items'이 정의되어 있지 않기 때문입니다. – user3366016
@ menus를 선언하는 곳 표시 –
레스토랑 컨트롤러 = def show @menus = Menu.where (: restaurant_id => @ restaurant.id) end –