0

ruby ガイドのこの部分を読みました: http://guides.rubyonrails.org/routing.html

CRUD に何かを詰め込むことが常に理想的であるとは限りません。私はこれについてのケースを持っています。私は調査を通過し、すべてのデータが実際に記入されたことを再検証した後に最後の「送信」ボタンを持ちたいと思っています(調査を部分的に作業することができ、保存して検証するため)データベースに)しかし、最終的な提出のためにすべてを記入する必要があります. したがって、送信した link_to コントローラーでメソッドを呼び出したいと思います。

私からしてみれば:

<%= link_to "Submit", :action => 'final_verify', :document_id => @document.id  %>  

今、wicked をウィザード コントローラーとして使用しています。この呼び出しが機能するように、一致するルートを作成する必要がありました。

ルート.rb:

  #match route so I can call from page_controller.rb
  match ':controller/:action/:id'

したがって、これは機能し、実行されますが、問題は、特定のページにリダイレクトしたい final_verify にエラーがある場合、このためのルートを作成する必要があるかどうかです。または、これを適切に行うには、redirect_to をフィナーグルする必要がありますか? これを行うための最良/正しい方法を理解できないようですか?

ユーザーが必要な部分を完了して再送信できるように、link_to を取得して最終検証を呼び出し、問題のあるページ (存在する場合) に移動するためだけに、一致したルートが正しい方法であるとは確信していません。(部分的につまずくのは、邪悪な宝石https://github.com/schneems/wickedを使用してこれを行う方法です

4

1 に答える 1

0

作成したルートは、実際には従来の「ワイルド コントローラー」ルート (アクションと ID のみはオプションではありません) であり、任意のコントローラー、アクション、および ID に一致します。RESTful アプリを実行している場合、それはお勧めできません。

特定の目的のために名前付きルートを作成した方がよいでしょう:

match 'submit/:document_id' => 'your_controller#final_verify', :as => :final_verify

最初の部分は使用可能な URL、中間の部分は呼び出されるコントローラーとアクション、3 番目の部分はルート名で、ビューとコントローラーでメソッドfinal_verify_pathとメソッドを提供します。final_verify_urlしたがって、link_to 呼び出しは次のようになります。

<%= link_to "Submit", final_verify_path(:document_id => @document.id)  %>

不完全なアンケートを送信した後にエラーを表示するには、基本的に 2 つのオプションがあります。

  • アクションの結果としてテンプレートをレンダリングする
  • 別のアクションにリダイレクトする

2番目のことをしたいようですredirect_to。たとえば、正しいウィザードページでエラーを表示するコントローラーでアクションを実行する必要があります。従来のルートをそのままにしておけば、おそらく他に何もする必要はありません。ただし、名前付きルートを使用することを選択した場合は、別のルートを定義してリダイレクトで使用するだけです。

于 2012-12-20T16:19:30.330 に答える