2016-05-01 3 views
0

私の仕事は、コントローラCheckout内のplace_orderアクションにフォームを送信することです。
これは、私はそれは、このメソッドの内部と私は同じクラスの他のいくつかの方法にredirectに私はしたいオブジェクトを保存するように達しない同じクラスの他のアクションにリダイレクトされたときに表示されるレールのリダイレクト

<%= form_for (@order), url: {action: "place_order"} do |f| %> 

すなわち私のビューファイルでフォームを書いた方法です。このメソッド名はthank_youです。私のコードは、この内部place_order方法

if @order.save 
    redirect_to :action => 'thank_you' 
else 
    ... 
end 

のように見えるが、それはこのクラスのメソッドを表示するようにリダイレクトします。他のクラスにリダイレクトすると、リダイレクトされますが、同じcontrollerの他のアクションでは、常にshowにリダイレクトされます。ここで

は、私は私のルート

resources :checkout 
resources :photos 
devise_for :users 
resources :carts 

post 'checkout/place_order' 
match 'checkout/thank_you', to: 'checkout#thank_you', via: [:get] 

私はこの上でいくつかの専門家の意見を必要とする定義された方法です。助けてください。

+0

本当ですか?一度確認してください。 'save'が' true'を返した場合、 'thank_you'アクションにリダイレクトする必要があるため、疑いがあります。 – illusionist

+0

はい私はかなり確信しています。私はここに質問を投稿する前にそれを何度もチェックしていたので、以下の答えがそれを解決しました。私の質問を見てくれてありがとう。 –

答えて

2

thank_youのルートをresources :checkoutに移動します。 Rails guidesから

あなた リソースを持っているので、もしルートは、彼らは指定された順序に一致している

レール:GET '写真/世論調査のリソースラインのためのshowアクションの ルート上の写真をget行の前に一致します。 を修正するには、 が最初に一致するように、リソース行の上にget行を移動します。

+0

ありがとう。それは私の問題を解決しました。 –

+0

偉大な答えニチ;素晴らしい観察。ついていく – illusionist

関連する問題