2012-06-19 3 views
1

편집을 할 .each 사용하는 경우 작동하지 : 지금 읽을 수있는 코드를 변경했습니다레일 - will_paginate 보석

보기 코드 :

<h3>Your Orders:</h3> 
<table class="order-items"> 
<th>Date</th> 
<th>Order No.</th> 
<th>View Order</th> 
<% @orders.each do |order| %> 
    <tr> 
     <td><%= order.created_at.strftime("%d %b. %Y") %></td> 
     <td><%= order.id %></td> 
     <td><%= link_to 'Show', order_path(order) %></td> 
    </tr> 
<% end %> 
</table> 

<p><%= will_paginate @orders %></p> 

컨트롤러 코드 :

@customer = Customer.find(params[:id]) 
@orders = @customer.orders.paginate page: params[:page], order: 'id desc', 
    per_page: 5 

경로 :

resources :orders 

resources :customers 

get 'admin' => 'admin#index' 

get 'account' => 'customers#show' 

match '/account', :to => 'customers#show' 

match'/signup', :to => 'customers#new' 

controller :sessions do 
    get 'login' => :new 
    post 'login' => :create 
    delete 'logout' => :destroy 
end 


resources :users 

resources :line_items 

resources :carts 

get "store/index" 

resources :products do 
    get :who_bought, on: :member 
end 

resources :line_items do 
    put 'decrease', on: :member 
    put 'increase', on: :member 
end 

root to: 'store#index', as: 'store' 

이제는 오류가 발생합니다.

@orders 변수는 비어있는 것으로 보입니다. will_paginate 컬렉션 개체를 전달하는 것을 잊었습니까?

보기의 주문 목록에서 "표시"링크를 클릭 할 때마다. 경우에 따라 서버를 다시 시작하려고 시도했지만 작동하지 않습니다. S!

+0

'link_to'Show ', order_path (order)'를 사용하고 경로에'resources : orders '가 있어야합니다. –

+0

나는 그것을 시도했다 - 그리고 order_path (order.id), 그리고 resources : orders는 이미 루트에있다 - 나는 그것을 처음으로 픽업했는지 확인하기 위해 맨 위로 옮겼다. 같은 오류 : S – ecs

답변

1

<% @orders.each do |order| %>

해야하지

<% @customer.orders.each do |order| %>

+0

나는 그럴 수 없다 - 코드는 고객의 쇼보기에 있고 테이블은 고객이 가진 많은 주문을하도록 설정되어있다. SQLite3 :: SQLException : 아니요 같은 열 : 제목 : SELECT "orders". * FROM "orders"WHERE "orders". "customer_id"= 2 ORDER BY title LIMIT 5 OFFSET 5 – ecs

+0

코드가 어떤보기에도있을 수 있지만 문제는 아닙니다. 오류는 주문 : '제목'에서 비롯됩니다. Order 모델에'title' 칼럼이 있습니까? –

+0

감사합니다 - 당신은 거대한 두통을 해결했습니다! 나는 바보스럽고 별도의 테이블에 저장된 제품의 이름과 대조하려고했습니다. 다시 한 번 감사드립니다! – ecs

0

Pls는이 코드를 확인보기

@customer = Customer.find(params[:id]) 
@orders = @customer.orders.paginate page: params[:page], order: 'title',per_page: 5 

<% @orders.each do |order| %> 
+0

그 효과는 페이지 매김에 효과적입니다.하지만 '표시'링크를 클릭하여 주문으로 이동하면 다음과 같은 오류가 나타납니다. 이유는 무엇입니까? @orders 변수가 비어있는 것 같습니다. will_paginate 컬렉션 개체를 전달하는 것을 잊었습니까? – ecs