2017-01-27 7 views
0

私には3つのモデルがあります。プロジェクトには多くのオーダーラインがあり、オーダーラインには多くのパッケージがあります。私はすべてのパッケージを部分的にレンダリングするShowメソッドとしてproject_orderlineのビューを持っています。それは正常に動作しますが、新しいパッケージを追加するときに、作成アクション内で同じビューをredirect_to(実際にリダイレクト)したいと思います。パスの適切な参照を使用する方法

class PackagesController < ApplicationController 
    before_action :set_package, only: [:show, :edit, :update, :destroy] 

    def create 
    project = Project.find(params[:project_id]) 
    orderline = project.orderlines.find(params[:orderline_id]) 
    @package = orderline.packages.new(package_params) 

     if @package.save 
     flash[:success] = "Package was successfully created." 
     redirect_to project_orderline_path(orderline) 
     else 
     render 'new' 
     end 
    end 

しかし、私は次のようなエラーがあります。

ActionController::UrlGenerationError in PackagesController#create

私はこれをどのように修正する必要がありますか?

PS:だから、ここテキスト形式のエラーMSGです:アクション=> "ショー"、::コントローラ=> "注文ライン"

ActionController :: UrlGenerationErrorがPackagesController#では Noルートの一致を{作成していません:id => nil、:orderline_id => "18"、:project_id =>#、起源: "123"、project_id:48、created_at: "2017-01-27 18:36:59"、updated_at: "2017 -01-27午後06時36分五十九秒" 、小計:#>}に必要なキーが欠落:[:ID]:私はSUないよ

resources :projects do 
    resources :orderlines do 
    resources :packages 
    end 
end 
+0

質問を編集して、エラーメッセージの全文を含めてください。これにより、答えるのがはるかに簡単になり、同じ問題を抱える他の人がこの質問を見つけやすくなります。 –

答えて

1

経路あなたが戻りたいので、あなたのproject_orderline_path(orderline)が動作していない理由を再、しかし、あなたが行うことができます:

redirect_to :back 

は、多分あなたは、あなたのルート、代わりにスクリーンショットの問題のテキストとしてエラーを投稿することができます。

+0

正直、実際に私は戻って、感謝と一緒に行きたい:バックそれだけでうまく動作します。しかし、私は元の方法でそれができない理由を理解したいと思います。 Plsは私のルートをポストで見ています。私はちょうど編集しました。 – Biagio74

関連する問題