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