2012-03-14 11 views
1

프로젝트를 생성하여 Ruby on Rails를 배우려고하고 있는데, 계속해서 오류가 발생하면 머리를 맞지 않는 것 같습니다. "NoMethodError"를 얻지 못하면 "기대하지 않았을 때 무 객체가 있습니다!"와 같은 것을 얻을 것입니다. - 은행 계좌를보고 해당 은행 계좌에 거래 내역을 표시하기 만하면됩니다. 내 문제는 컨트롤러와 함께있을 수 있지만, 나는 모든 종류의 다른 것들을 시도하고 그것을 알아낼 수 없습니다. 많은 도움을 주시면 대단히 감사하겠습니다. 나는 모든 것을 포함했다고 생각한다. 그렇지 않다면, 나는 사과해야하며, 다른 무엇이 필요한지를 포함 할 것이다.NoMethodError in Bank_accounts # show

은행 계좌 컨트롤러 쇼 (나는 오류가 쇼에 생각) :

def show 
    @bank_account = BankAccount.find(params[:id]) 
    @transactions = @bank_account.transaction 

    respond_to do |format| 
    format.html # show.html.erb 
    format.xml { render :xml => @bank_account } 
end 

조회수 : bank_accounts> show.html.erb

<% @transactions.each do |transaction| %> 
    <tr> 
    <td><%=h transaction.transaction_id %></td> 
    <td><%=h transaction.dateD %></td> 
    <td><%=h transaction.trans_type %></td> 
    <td><%=h transaction.amount %></td> 
    <td><%=h transaction.new_balance %></td> 
    <td><%=h transaction.transaction_success %></td> 
    <td><%= link_to 'Show', transaction %></td> 
    <td><%= link_to 'Edit', edit_transaction_path(transaction) %></td> 
    <td><%= link_to 'Destroy', transaction, :confirm => 'Are you sure?', :method => :delete %></td> 
    </tr> 
<% end %> 

나는이 생각 역 추적 (그것을 포함하지 않아서 미안하다). "는 BankAccount/응용 프로그램/컨트롤러/bank_accounts_controller.rb : 17 : '쇼'에서"내가 할 경우에도

의 은행 계좌 컨트롤러에 대해 다음

def show 
    @bank_account = BankAccount.find(params[:id]) 
    @transactions = @bank_account.transactions 

    respond_to do |format| 
    format.html # show.html.erb 
    format.xml { render :xml => @bank_account } 
end 

내가이 SQL 오류를 얻을 : "ActiveRecord :: JDBCError : [SQLITE_ERROR] SQL 오류 또는 누락 된 데이터베이스 (해당 열 없음 : transactions.bank_account_id) : SELECT * FROM"transactions "WHERE ("transactions ".bank_account_id = 1)"

+0

역 추적을 게시 할 수 있습니까? 그것은 당신을 문제로 인도해야합니다. – EndangeredMassa

답변

0

그들에 액세스 할 수있는 방법은 복수입니다 :

@transactions = @bank_account.transactions 
+0

안녕하세요, 저는이 두 가지를 모두 시험해 보았습니다. 행운을 빕니다. # "에 대한 정의되지 않은 메소드'transactions '가 나타납니다. 여기 내 모델 : bank_account.rb class BankAccount

+0

나는 "BankAccount.find (모든)"를 사용하는 경우 어쩌면 BankAccount.find은 전무 – qwertoyo

+0

을 반환에 레일 콘솔은 모든 데이터를 반환합니다. 그리고 "BankAccount.find (1)"을 사용하면 데이터를 반환합니다. 그럼 분명히 돌아 오지 않을거야? –

1

문제가있는 것 같습니다 BankAccount.findnil을 반환하고 있다는 것입니다. 그런 다음 다음 줄에서 @bank_accounttransaction 메서드에 액세스하려고 시도하면 오류가 발생합니다.

params[:id]의 값이 올바른지 확인하십시오. 귀하는 BankAccount 모델은 많은 트랜잭션이있는 경우

+0

레일즈 콘솔에서 "BankAccount.find (: all)"를 사용하면 모든 데이터가 반환됩니다. 그리고 "BankAccount.find (1)"을 사용하면 데이터를 반환합니다. params [: id]가 예를 들어 http : // localhost : 8080/bank_accounts/1에 기반하여 변경되지 않아야합니까? @bank_account = BankAccount.find (1)를 사용하면 여전히 다음 오류가 발생합니다. "ActiveRecord :: JDBCError : [SQLITE_ERROR] SQL 오류 또는 누락 된 데이터베이스 (해당 열 없음 : transactions.bank_account_id) : SELECT * FROM" 트랜잭션 "WHERE ("transactions ".bank_account_id = 1)" –

+0

당신은'rake db : migrate'를 실행 했습니까? – EndangeredMassa

0

당신은 당신의 모델 코드 및 마이그레이션 코드를 보면 할 수 있습니다. @ bank_account.transaction을 사용하여 트랜잭션을 반환하려면 두 트랜잭션이 일대일 관계가 있어야합니다.

귀하의 BANK_ACCOUNT 모델을 생성 트랜잭션 테이블이

transaction.references :bank_account 

참조가 생성됩니다 뭔가를해야 할 때

has_one :transaction 

거래가

belong_to :bank_account 

마이그레이션 스크립트를해야해야 거래 테이블의 bank_account_id 필드. "왜 그런 열 : transactions.bank_account_id"오류가 있다고 생각하십니까?