2012-05-03 2 views
0

본질적으로 나는 Devise라는 앱을 가지고 있는데, 나는 사용자 모델과 의제 모델을 가지고있다. 의제 'belongs_to'사용자 및 사용자 'has_many "의제, 이들은 내 DB 관계입니다. 나는 IRB를 실행하고 db 데이터를 올바르게 가져올 수 있습니다. user = User.first user.agendas 나는 모든 게시물의 목록을 가져올 것입니다. 해당 사용자에게 로그인 할 때 내 문제가 발생합니다. 사용자가 home # index로 리디렉션되지만 집에서 NoMethodError가 발생합니다 # index undefined method 'agendas'for nil : NilClass 내가 누락 된 것 같습니다. 내 의제 컨트롤러에 인덱스 방법을 필요도? ..app/뷰/홈/index.html.erb정의되지 않은 메소드 'agendas'for nil : NilClass Actioncontroller?

<h3>Home</h3> 
<div class="row"> 
    <div class="span8"> 
     <% if @user.agendas.any? %> 
     <h3>Agendas</h3> 
     <ol class="agendas"> 
      <%= render @agendas %> 
     </ol> 
     <% end %> 
    </div> 
</div> 

내 home_controller.rb

class HomeController < ApplicationController 
    before_filter :authenticate_user! 

    def index 
    @agendas = current_user.agendas.paginate(page: params[:page]) 
    end 

내 아젠다 컨트롤러에는 향후 코드 용 작성 및 삭제 스텁이 있습니다. 는 귀하의 오류가이에서 오는 /agenda.rb

class Agenda < ActiveRecord::Base 
    attr_accessible :title 
    belongs_to :user 

    validates :title, presence: true, length: { maximum: 140 } 
    validates :user_id, presence: true 

    default_scope order: 'agendas.created_at DESC' 
end 
+1

내 문제점을 파악했습니다 ... home.html.erb는 current_user.agendas.any가되어야합니다? – TheIrishGuy

+0

하지만 일정 목록이 채워지지 않고 있고, 표시 코드에 문제가있는 사람은 누구입니까? – TheIrishGuy

답변

0

모델 :

<% if @user.agendas.any? %> 

및 오류가 @usernil 것을 말한다. 컨트롤러는 말한다 : 나는 @user 거기에 값을 할당되는 표시되지 않습니다

def index 
    @agendas = ... 
end 

. authenticate_user! 필터가 @user 중 하나라고 생각하지 않습니다.

<% if @user.agendas.any? %> 
    <h3>Agendas</h3> 
    <ol class="agendas"> 
    <%= render @agendas %> 
    </ol> 
<% end %> 

당신은 또한 ERB에 직접 current_user에 액세스 할 수 있습니다 : 다음

def index 
    @user = current_user 
    @agendas = @user.agendas.paginate(page: params[:page]) 
end 

과 : 그래서 당신은이 작업을 수행 할 수

<% if current_user.agendas.any? %> 
    <h3>Agendas</h3> 
    <ol class="agendas"> 
    <%= render @agendas %> 
    </ol> 
<% end %> 

그러나 마음에 이미 갔어요 그 유지 @agendas을 계산하는 데 어려움을 겪습니다. 그렇다면 컨트롤러를 그냥두고 보지 않으시겠습니까?

<% if @agendas.present? %> 
    <h3>Agendas</h3> 
    <ol class="agendas"> 
    <%= render @agendas %> 
    </ol> 
<% end %> 
+0

답변 해 주셔서 감사합니다. 찾았습니다. – TheIrishGuy

관련 문제