2011-01-22 4 views
1

에 부분 인덱스를 렌더링 색인. 테이블의 모든 트랜잭션을 반환해야합니다. 내 부분이 포함되어은 어떻게 (인덱스)</p> <p>내 부분 테이블로 부분을 렌더링하기 위해 노력하고있어 내 대시 보드에서 Rails3

<% @transactions.each do |transaction| %> 
    <tr> 
    <td><%= transaction.transaction_type %></td> 
    <td><%= transaction.date %></td> 
    </tr> 
    <% end %> 

I 나타나는 오류 :!. 평가하는 동안 당신이 그것을 기대하지 않았을 때

는 "당신은 전무 개체가 당신은 배열의 인스턴스를 예상했을 수도 오류가 발생했습니다 nil.each "

+0

@transactions 변수가 전혀 설정되어 있지 않은 것으로 보입니다. 컨트롤러에 설정 하시겠습니까? 어쩌면 @ 전에 이름을 잊어 버렸을까요? – tomeduarte

답변

2

귀하의 TransactionsController#index 작업이 @transactions에 대해 아무것도 반환하지 않는 것으로 보입니다. 가장 명백한 원인은 레코드를 찾기 위해 사용하는 논리가 잘못되어 0 개의 결과를 반환하거나 @transactions를 올바르게 설정하지 않는다는 것입니다.

그런보기에서 결과가없는 상황 (또는 일종의 오류)에 대해 오류 검사를 수행하려고합니다.

귀하의 index.html을보기 : 부분

<% if [email protected] || @transactions.length == 0 %> 
    <p>'No transactions found.'</p> 
<% else %> 
    <table> 
     <!-- put your column headers here --> 
     <!-- the next line iterates through each transaction and calls a "_transaction" partial to render the content --> 
     <%= render @transactions %> 
    </table> 
<% end %> 

귀하의 _transaction.html.erb :보기가 다시 작동됩니다

<tr> 
    <td><%= transaction.transaction_type %></td> 
    <td><%= transaction.date %></td> 
</tr> 

. 다음 단계는 컨트롤러 동작이 결과를 반환하지 않는 이유를 파악하는 것입니다. 레일 콘솔을 열고 레코드를 검색하여 시작하십시오.

>> Transaction.all 

결과가 반환되면 데이터가 반환됩니다. 그렇지 않다면, 당신이 개발 한 웹 인터페이스를 통해 또는 레일 콘솔을 통해 중 하나 레코드를 작성 : 당신이 기록이되면

>> t = Transaction.new() 
>> t.transaction_type = 1 #or whatever is appropriate for your application 
>> t.date = Date.today 
>> t.valid? #if true, your record will save. If not, you need to fix the fields so they validate 
>> t.save 

가 다시보기를 테스트합니다. 그래도 실패하면 컨트롤러 로직에 오류가있을 것입니다. 그 오류가 무엇인지에 관해서는, 우리가 당신을 도와주기 위해 게시해야합니다. :)

+0

Shaun에게 감사드립니다. 매력처럼 작동합니다. 범위를 통해 트랜잭션을 표시하기 위해 내 뷰를 어떻게 업데이트합니까? – Olivier

+0

컨트롤러 동작은 정보를 가져 와서 @transactions 변수에 배치하기 위해 모델의 범위를 참조해야합니다. 거기서, 당신의 견해는 단지 @transactions를 그 특정 범위의 데이터 모음으로 참조 할 것입니다. – Shaun

+0

또한 질문에 대답 한 모든 사람들에게 호의를 베풀고 답변이 필요한 답변 일 경우 투표 점수 아래의 체크 표시를 클릭하여 동의 할 수 있습니다. 장래에 같은 질문을하는 다른 사람들을 도울뿐 아니라 그 질문에 대답 한 당신과 그 사람 모두 약간의 업을 얻습니다. :) – Shaun

관련 문제