2011-08-27 5 views
5

특정 주문에 대한 마일스톤 목록을 표시하려고합니다. (주문은 많은 이정표가 있습니다.) 내 주문 모델에서Rails3 명명 된 범위에서 : params를 어떻게 사용할 수 있습니까?

, 나는이있다 :

scope :open, lambda { 
    joins("join milestones on milestones.order_id = orders.id"). 
     where("order_id = ? AND milestone_status = ?", :params[:order_id], true). 
     group("orders.id") 
    } 

내가 일할 수있는 현재 주문 ID를 점점 데 문제 - : PARAMS [: ORDER_ID]를 명확를 잘못된. 내 경로에

나는이 있습니다

resources :orders do 
    resources :milestones 
    end 

를 다음과 같이 내 URL은 다음과 같습니다

http://127.0.0.1/orders/2/milestones

어떻게 이런 일이 가능할까요? 수동으로 주문 ID로 교체하여 범위를 테스트했습니다.

- - 편집

아래의 조언에 따라, 나는이 내 이정표 컨트롤러에 다음을 넣어했습니다

< :

@orders = Order.open(params[:order_id]) 

그리고 내보기에,이이 % @ orders.each do | open | %> 오류가 발생합니다

그러나 :

wrong number of arguments (1 for 0) 

전체 스택 트레이스가 여기에 있습니다 :

scope :open, lambda { |order_id| 
joins("join milestones on milestones.order_id = orders.id"). 
    where("order_id = ? AND milestone_status = ?", order_id, true). 
    group("orders.id") 
} 

을 그리고이 같은 컨트롤러에 전화 : http://pastie.org/2442518

+0

전체 스택 추적을 추가하십시오. –

+0

할 것입니다. 방금 튀어 나왔다. 나중에 붙여 넣습니다. 다시 한 번 감사합니다 –

+0

@ Mauricio-Linhares. 전체 추적으로 내 대답을 편집했습니다. 도움을 주셔서 감사합니다. –

답변

4

이런 식으로 정의 :

def index 
    @orders = Order.open(params[:order_id]) 
end 
+0

고마워. 마일스톤 컨트롤러를 넣었지만 오류가 발생했습니다. 내 질문을 업데이트했습니다. Jx –

+0

'| order_id |'부분을 람다에 추가 했습니까? – Eric

+0

@Eric - 예, 위와 같습니다. –

관련 문제