0
どのようにしてリダイレクトがレールで機能しますか?私は非常に直観的でイライラしていることがわかります。Rails 3 redirectioning
def custom
end
私はroutes.rbをして、次のしている:私のコントローラで
resources :mymodel do
member do
get 'custom'
end
end
は、私がレンダリングしよう/views/mymodels/custom.html.erb
下
私が追加したビューファイルは、私は空のコントローラメソッドを持っていますモデル作成時のカスタムビュー:
respond_to do |format|
if @presentation.save
redirect_to action: "custom"
#format.html { redirect_to @mymodel, notice: 'Presentation was successfully created.'}
#format.json { render json: @mymodel, status: :created, location: @mymodel }
これにより、リダイレクトによって空白のページが表示されます。しかし、ブラウジング/mymodels/[id]/custom
は正常に動作します。私は間違って何をしていますか? render :action => "custom"
のどちらも機能しないのはなぜですか?
EDIT:
これは動作します:format.html { render action: "upload" }
が、なぜ?
なぜ平野redirect_toが動作しませんか? – Fdr
あなたは 'respond_to'ブロックの中に置いたからです。このブロックをコメントし、あなたの 'redirect_to'をその外側に移動して確認してください。あなたが期待している通りに、すべてが機能するはずです。 – jdoe
しかし、あなたは 'respond_to'から出てくるこの動きはちょうど楽しいものでなければならないことを理解しなければなりません。実世界のアプリケーションでは、レスポンダを使用する必要があります。これは読みやすく、RESTfulです。単一のリソースをさまざまな表現で表現するMVCに準拠したアプローチです。こうすることで、 'Product'のようにjson/xml/other形式で新しいアクションを追加したり、ルートやその他のものを変更することなく簡単に表現することができます。 – jdoe