2016-06-28 6 views
1

誰かが `redirect_to @ model`のドキュメントを私に指摘できますか?私が見ている私の生成コントローラで

format.html { redirect_to @foo, notice: 'Foo was successfully created.' } 

を、私はどこにも見ていないよ、何がそれがモデルを渡されたときに何をしているかredirect_toの説明です。

私はredirect_toのことを知っています。しかし、この特定の形式は、例えばredirect_to url_for_fooまたはredirect_to action: :showとどのように異なっていますか?

答えて

0

redirect_toは、クライアントがリダイレクトされるパスを生成するためにurl_forを使用します。

モデルがurl_forに渡されると、インスタンスに基づいて対応するリソースURLを構成しようとします。

<%= url_for(@workshop) %> 
# calls @workshop.to_param which by default returns the id 
# => /workshops/5 

同じことが再びURLはurl_forの計算の結果であり、action: "show"に適用した例を参照してください。上にリンクしたurl_forのドキュメントに詳細があります。 http://api.rubyonrails.org/classes/ActionController/Redirecting.htmlによれば

+0

ので、基本的に、私たちが言っている、「レコードの胸が張り裂けるの標準的な方法であると言うものは何でもroutes.rbをにこれをリダイレクトしますか」?混乱していても役に立つ。 –

+0

はい、正しく入力してください。個人的には、長期的にはアプリケーションを維持するのが非常に難しく、ルートの検索/置換を実行するのが非常に難しいので、私はそれも気に入らない。私は通常、常に明示的なパスを使用します。 –

0

: redirect_to(オプション= {}、response_status = {}) リンク

オプションで指定されたターゲットにブラウザをリダイレクト。このパラメータは、次のいずれかを指定できます。

  • ハッシュ - このオプションは、オプションでurl_forを呼び出して生成されます。
  • レコード - URLは、そのレコードの名前付きURLを参照するオプションとともにurl_forを呼び出すことによって生成されます。

url_for documenation http://apidock.com/rails/ActionView/RoutingUrlFor/url_forをご覧ください。

オプションパラメータとしてハッシュの代わりに(アクティブレコードのような)レコードを渡すと、そのレコードの名前付きルートがトリガーされます。ルックアップはクラス名で行われます。したがって、Workshopオブジェクトを渡すと、workshop_pathルートを使用しようとします。あなたがadmin_workshop_pathのようなネストされたルートを持っているなら、それを明示的に呼び出さなければなりません(url_forがそのルートを推測することは不可能です)。

例:

<%= url_for(@workshop) %> 
# calls @workshop.to_param which by default returns the id 
# => /workshops/5 
関連する問題