2012-07-28 3 views
3

나는 ruby.railstutorial.org의 mhartl 튜토리얼을 따르고 있고 users_controller의 인덱스 함수에 문제가있다. 콘솔에서이 코드를 입력 할 수 있습니다 :데이터베이스에서 레일스 사용자 목록

@users = User.all 

적절하게 SQL 데이터베이스에 액세스하고 모든 사용자의 목록을 표시합니다. 그러나 페이지를로드하려고 할 때 인덱스 파일에서 목록을 사용하는 방법에 따라 다양한 오류가 발생하지만 모든 목록이 무효로 표시됩니다.

<% @users.each do |user| %> 
    <li> 
     <%= link_to user.name, user %> 
    </li> 
<% end %> 

서버가 뱉어 :

undefined method `each' for nil:NilClass 

render @users 같은 뭔가가 나에게 'nil' is not an ActiveModel-compatible object that returns a valid partial path.

내가받을 이유 정말 혼란 스러워요의 오류를 제공 예를 들어, 내 인덱스 페이지는이 포함되어있는 경우 이 오류는 콘솔에서 작동하는 경우. 나에게 다른 코드가 필요한지 알려줘.

도움 주셔서 감사합니다.

+0

아마도 재미있을 것입니다. 레일즈 서버를 실행하는 프롬프트는 'nil' 오류가 발생하기 직전에이를 출력합니다 : '시작 ...'/ users ... for ... 'UsersController # index by HTML 처리' '... " users ". * FROM"users "where"users "."remember_token "= '...'LIMIT 1' 특정 쿠키 토큰을 가진 사용자 만 검색하는 것처럼 보이지만 존재하지 않는 것 같습니다. ? 왜 이런 짓을하는거야? –

답변

6

이 오류 메시지는 모두 @user가보기에 nil임을 나타냅니다. 보기가 views/users/index.html.erb라고 가정하면 이 있습니다. users_controller 색인 작업에서 @users를 초기화 했습니까?

def index 
    @users = User.all 
end 
+0

그래, 그거야. 하지만 어쨌든 정확히 같은 코드가 콘솔에서 제대로 작동하더라도 실제로는 @ 사용자에게 아무것도 넣지 않습니다. –

+0

결코 실패한 것을 보지 못했습니다. 당신이 뭔가를 놓쳤다면 아주 가깝게 점검해야하며, 컨트롤러를 제공하고 추가 검사를 위해 여기에서 코드를보아야합니다. – bento

+1

한숨 ... 늘 그렇듯이 문제가 무엇인지 인정하기가 부끄럽다. 아무 래도 나는 그것을 완전히 버리고 있던 컨트롤러에 추가로 비어있는'index' 메소드를 가지고있었습니다. 그리고 나는 부분적인 사용자를 놓치고 있었기 때문에 그것을 고쳐야 만했다. 그러나 이제는 모든 것이 작동 중입니다! 제가 한 일이라고 생각했던 당신의 제안은 돈을 지불했습니다. 고마워요 :) –

관련 문제