コードは何ですか
redirect_to @user
コントローラ方式で使用する場合、Railsではどういう意味ですか?
正確にはどこにリダイレクトされますか?ユーザーコントローラーにリダイレクトしますか(その場合、コントローラーのどのメソッド)、コントローラーを経由せず、代わりにビューに直接移動しますか?
コードは何ですか
redirect_to @user
コントローラ方式で使用する場合、Railsではどういう意味ですか?
正確にはどこにリダイレクトされますか?ユーザーコントローラーにリダイレクトしますか(その場合、コントローラーのどのメソッド)、コントローラーを経由せず、代わりにビューに直接移動しますか?
基本的に、それはあなたのリソースルートがどのように機能するかについてたくさんのものを調べます
このように考えてください
send("#{@user.class.name.underscore.downcase}_path", @user)
これはおそらく正確なコードではありませんが、実際に何が起こっているのかを視覚化するのに役立つはずです。
コントローラーは常に実行されます。この場合、ファンキーなルーターオプションがない限り、ユーザーコントローラーの表示アクションになります。
rake routes
この場合、ルートがどのようにレイアウトされているかを説明します。
get /users/:id => users#show :as => "user_path"
着信モデルからの置換は次のように機能します
ルートから正規表現が作成されます
:idはパラメータです
@userであるパス関数へのinbound_objectに一致します
:id is replaced with @user.id
オプションで指定されたターゲットにブラウザをリダイレクトします。このパラメーターは、次の3つの形式のいずれかを取ることができます。
...
レコード-URLは、オプションを指定してurl_forを呼び出すことによって生成されます。このオプションは、そのレコードの名前付きURLを参照します。
そして、url_for docsから:
オプションパラメータとしてハッシュの代わりにレコード(アクティブレコードやアクティブリソースなど)を渡すと、そのレコードの名前付きルートがトリガーされます。ルックアップはクラスの名前で行われます。したがって、Workshopオブジェクトを渡すと、workshop_pathルートを使用しようとします。admin_workshop_pathなどのネストされたルートがある場合は、それを明示的に呼び出す必要があります(url_forがそのルートを推測することは不可能です)。
これは書くのと同じです
redirect_to user_path(@user)
良くも悪くも、ここではより多くのRailsマジックが機能しています。
このようなユーザーのshow関数を呼び出します
redirect_to user_path(@user)
重要なポイント:ルートが表示された場合、:idは渡されますが、ここではオブジェクトが渡されます
これは、によってユーザーのIDに変換されます
def to_param self.id end
これはモデルで利用可能であり、次のように上書きできます
つまり、基本的に変換は最初に行われます
redirect_to @user => redirect_to user_path(@user)
それから
@user => @user.id