【備忘録】パスのあとのインスタンス変数
link_toやredirect_toなどで次のようなパスを見ることがあります。
redirect_to user_path(@user)
redirect_to @user
この二つは同じ動きをしますが、なぜパスのあとにインスタンスを入れているのでしょうか?
次のコードについて考えてみましょう。このコードから生成されるURLはなんでしょうか?
redirect_to user_path(10)
実はこの10はidを指しているんです。
そのため生成されるURLは「users/10」のようになります。
では、最初に取り上げたコードは何を指すのかというと、 呼び出されたインスタンスのidを代入していることになります。
@user = User.new(user_params) if @user.save redirect_to @user end
User.newで生成されたユーザーのidがURLに代入されてビューが表示されます。