A Wicked example に従ってウィザードを作成していますが、最初に専用コントローラーでモデルを作成し、保存時にステップ コントローラーにリダイレクトしていますが、次のようなルーティング エラーが発生しています。
No route matches {:action=>"show", :controller=>"needs_personals/steps"}
リダイレクト コードは次のようになります。
redirect_to needs_personal_step_path, :needs_personal_id => @needsPersonal.id
私はこれを出力するので使用needs_personal_step_path
しrake routes
ました:
needs_personal_steps GET /needs_personals/:needs_personal_id/steps(.:format) needs_personals/steps#index
POST /needs_personals/:needs_personal_id/steps(.:format) needs_personals/steps#create
new_needs_personal_step GET /needs_personals/:needs_personal_id/steps/new(.:format) needs_personals/steps#new
edit_needs_personal_step GET /needs_personals/:needs_personal_id/steps/:id/edit(.:format) needs_personals/steps#edit
needs_personal_step GET /needs_personals/:needs_personal_id/steps/:id(.:format) needs_personals/steps#show
PUT /needs_personals/:needs_personal_id/steps/:id(.:format) needs_personals/steps#update
DELETE /needs_personals/:needs_personal_id/steps/:id(.:format) needs_personals/steps#destroy
ルートファイルにはこれがあります:
resources :needs_personals do
resources :steps, controller: 'needs_personals/steps'
end
ブラウザに向かうパスを入力すると、機能します/needs_personals/90/steps
ありがとう。
2012 年 9 月 29 日更新
これがなぜそれを行っているのかを理解し、回避策を実装したと思います。id パラメータとの混同が原因だと思います。通過したにもかかわらずneeds_personal_id
、IDを中間IDではなくリンクの最後のパラメータとして扱っているようです。
私の回避策は、実際の文字列 URL をポイントすることです。
redirect_to "/needs_personals/#{@needsPersonal.id}/steps"
これはうまくいきます。ただし、正しいパスでそれを行う方法を知りたいです。