2011-06-26 18 views
3

請求書を更新した後、ルーティングが正しく機能するようにしようとしています。Rails3ネストされたルート、Redirect Update_To問題

私は多くの請求書と秩序を持っているし、私のroutes.rbを

resources :orders do 
resources :invoices 
end 

resources :invoices 

をしてそして、私の請求書コントローラで次

/orders/1/invoices/new 
:私はを通じて請求書を作成することができます

def update 
    @invoice = Invoice.find(params[:id]) 
    respond_to do |format| 
     if @invoice.update_attributes(params[:invoice]) 
     format.html { redirect_to(invoice_path(@invoice), :notice => 'Invoice was successfully updated.') } 
     else 
     format.html { render :action => "edit" } 
     end 
    end 
    end 

保存したり更新したりすると、次の宛先に送信されます:

/invoices/1 

私はバックオーダーの請求書のパスにリダイレクトする必要があります。

/orders/1/invoices/1 

もにリダイレクトを変更しようとしたことがあり:

redirect_to(order_invoice_path(@order, @invoice), :notice => 'Invoice was successfully updated.') 

これは動作しますが、それはと間違ったURLに私を送ります注文IDは請求書IDと同じです...

何か助けていただければ幸いです。

- UPDATE -

私は私のインボイスコントローラで次のようにしようとすると、私はあまりにもエラーになってしまう。..

redirect_to(order_invoice_path(@order, @invoice) 

No route matches {:action=>"show", :controller=>"invoices", :order_id=>nil, :id=>#<Invoice id: 6, order_id: 17, invoice_id: nil, created_at: "2011-06-26 17:49:01", updated_at: "2011-06-26 17:49:01">} 

答えて

2

あなたがいるようですあなたのコントローラで次のように:

redirect_to(order_invoice_path(@order, @invoice), :notice => 'Invoice was successfully updated.') 

Buあなたはどこかで@orderを設定しますか?

何であれ、あなたはもっと良いと思います。

redirect_to(order_invoice_path(@invoice.order, @invoice), :notice => 'Invoice was successfully updated.') 
+0

こんにちは、おかげで多くのことを。後者のアプローチは完璧でした。どこでこれを読むことができますか?それは本当に私を抱きしめています。私は永遠にそのようなことをするように努力しています。 Jx –

+0

モデル間の関連付けを作成する場合、この種のメソッドは組み込みです。http://guides.rubyonrails.org/association_basics.html – apneadiving

関連する問題