0

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_pathrake 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"

これはうまくいきます。ただし、正しいパスでそれを行う方法を知りたいです。

4

1 に答える 1

1

これがあなたが探しているものだと思います:

redirect_to needs_personals_steps_path(@needsPersonal.id, :first_step)

ここで、:first_step は、ウィザードの最初のステップの記号です。

于 2012-10-05T19:35:05.530 に答える