2011-08-05 6 views
1

나는 여기 무언가를하고있는 것처럼 느껴집니다. 나는 간단한 TODO 목록 app을 만들고있다. (나는 이미 그것들이 백만 개가 있음을 깨달았다.) 나는 프로젝트 정의와 그 프로젝트 내의 작업이 할당 될 수있는 다양한 상태를 가지고있다.Rails 3 Render 부분 무효 객체

상관없이 페이지 타격 때, 나는 다음과 같은 오류 메시지를 수신하고있는 무슨 : 무기 호에 대한

정의되지 않은 메서드`제목을 'NilClass

This question about nil objects는하지만 매우 유사하다 제안 된 솔루션은 내가 직면 한 문제를 해결하지 못하는 것 같습니다. 프로젝트와 관련된 상태는 하나 뿐이며 아무 것도 아닙니다. 이 문제는 상태가 연결되는과는 아무 상관이있는 경우 내 프로젝트에서

나는이 ... 궁금하네요 :

<% @project.statuses.each do |s| %> 
     <%= s.inspect %> 
     <%= render 'statuses/show', :status => s %> 
    <% end %> 

#if I take out the render line - the status shows up 

상태는 지금 기본적으로 그냥 일반적인 스캐 폴딩이다 - 컨트롤러에서 직접 데이터를 전달하는 경우 객체 @status가 수신됩니다. ... render :partial..., :locals => { :status = s} 등으로 시도했습니다. 제안 사항에 감사드립니다.

업데이트 - 부분 _show 추가 :

<p id="notice"><%= notice %></p> 

<p> 
    <b>Title:</b> 
    <%= @status.title %> 
</p> 

<p> 
    <b>Description:</b> 
    <%= @status.description %> 
</p> 

<p> 
    <b>Active:</b> 
    <%= @status.active %> 
</p> 

<%= link_to 'Edit', edit_status_path(@status) %> | 
<%= link_to 'Back', statuses_path %> 

업데이트 -

NoMethodError in Projects#show 

Showing /home/.../app/views/statuses/_show.html.erb where line #5 raised: 

undefined method `title' for nil:NilClass 
+0

상태 내용/_show partial을 표시 할 수 있습니까? –

+0

아마도 아마도 범인 행을 가리키는 스택 추적의 일부일 것입니다. – Thilo

답변

2

내가 문제가 당신이에 @status를 참조하고 있다는 판단 오류 메시지의 더 추가 ERB partial. status을 참조해야하며 @은 선두가 아닙니다.

@status은 정의 된 인스턴스 변수을 찾는 것을 의미합니다. :status => s을 전달하는 중에보기가 status이라는 로컬 변수를 통해 s에 액세스 할 수 있음을 의미합니다.

또한 간단히 :status => s이 작동하지 않으면 :locals => {:status => s}을 시도하십시오. 어떤 경우에는 이 아니라보기에서 status에 액세스하십시오.

+0

정확히 그게 뭔지 고마워. –

1

가장 큰 문제는 :status이 렌더링 옵션입니다. http 코드를 200 또는 : ok와 같이 렌더링합니다.

<%= render :partial => 'statuses/show', :locals => { :status => s } %> 

와 변수에 대한 @을 사용하지 마십시오

는 어떤 작업을해야하는 것입니다.

<%= status.title %>