2011-08-27 13 views
5

特定の注文のマイルストーンのリストを表示しようとしています。 params [::ORDER_ID]明確である -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が動作するようになっている:(。受注は多くのマイルストーンを持っている)

を私の命令モデルでは、私はこれを持っています違う。私のルートで

私はこれを持って次のように

resources :orders do 
    resources :milestones 
    end 

そして、私のURLは次のとおりです。

http://127.0.0.1/orders/2/milestones

これが可能であるどのように?スコープを手動で注文IDに置き換えてテストしました。

- - EDIT

以下のアドバイスを1として、私は私のマイルストーンコントローラに以下の置かれている:

<:

@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

@マウリシオ - Linhares。完全なトレースで私の答えを編集しました - 助けてくれてありがとう。 –

答えて

4

はこのようにそれを定義します。 :

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

ありがとう。マイルストーンコントローラを入れましたが、エラーが発生します。私の質問を更新しました。 Jx –

+0

'| order_id |'部分をラムダに追加しましたか? – Eric

+0

@エリック - うん、上記のように。 –

関連する問題