에 대한 정의되지 않은 메서드`postlist '
class Event < ActiveRecord::Base
belongs_to :group
has_many :posts
def postlist
Post.from_event_posts(self)
end
end
class Post < ActiveRecord::Base
belongs_to :event
belongs_to :user
def self.from_event_posts(event)
where(event_id: event.id)
end
end
class GroupsController < ApplicationController
def show
@eventlist = @group.eventlist #returns hash of events for a group - confirmed working
#Get list of posts for each event
@postlist = @eventlist.postlist
end
end
<%= @eventlist.each do |e| %>
<ul>
<li><%= e.title %></li>
<%= e.postlist.each do |p| %>
<ul>
<li><%= p.comment %> | <%=p.user_id%> </li>
</ul>
<%end%>
</ul>
<%end%>
나는 다음과 같은 오류가 발생합니다. 그런데 레일즈의 일반적인 규약은 변수들을 @events
과 @posts
이라고 부르는 것입니다. (단지 팁 만 있으면 나중에 익숙해 질 수 있습니다).
그룹 수업을 보여줄 수 있습니까?
나는 그런 식으로 뭔가를 작성합니다
def show
@events = @group.events.includes(:posts)
end
(가) 방법은 뷰를 렌더링하기 전에 게시물을로드, 수행중인 SQL 쿼리에 게시물 테이블에 참여합니다 포함되어 있습니다. 귀하의보기는 다음과 같습니다 :
<%= @events.each do |e| %>
<ul>
<li><%= e.title %></li>
<%= e.posts.each do |p| %>
<ul>
<li><%= p.comment %> | <%=p.user_id%> </li>
</ul>
<%end%>
</ul>
<%end%>
그리고 나는 당신이 postlist 및 eventlist 방법을 제거 할 수 있다고 생각합니다. 그런 종류의 기능은 이미 존재합니다.
감사합니다. 필자는 Rails 개발을 시작했지만, @ events/@ posts를 사용하는 것이 관례라는 것을 알았지 만, 똑같은 이름의 모든 전역 변수를 갖는 것은 혼란스럽지 않습니까? – kyle
어쩌면 처음에는 어쩔 수 없지만 나중에는 너무 자연 스러울 것입니다. :). '@ post','@ posts','Post'는 완전히 다른 것을 의미합니다. 나는 그것이 실제로 아주 멋지다라고 생각한다! – Oxynum