2

コードは何ですか

redirect_to @user

コントローラ方式で使用する場合、Railsではどういう意味ですか?

正確にはどこにリダイレクトされますか?ユーザーコントローラーにリダイレクトしますか(その場合、コントローラーのどのメソッド)、コントローラーを経由せず、代わりにビューに直接移動しますか?

4

4 に答える 4

4

基本的に、それはあなたのリソースルートがどのように機能するかについてたくさんのものを調べます

このように考えてください

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

于 2012-10-19T21:54:03.420 に答える
2

redirect_toドキュメントから:

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

   ...

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

そして、url_for docsから:

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

于 2012-10-19T21:56:05.723 に答える
2

これは書くのと同じです

redirect_to user_path(@user)

良くも悪くも、ここではより多くのRailsマジックが機能しています。

于 2012-10-19T22:08:19.637 に答える
1

このようなユーザーの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
于 2012-10-20T05:59:25.107 に答える