りゅうじの学習blog

学習したことをアウトプットしていきます。

Railsチュートリアル7章をやられている方へ

すみません。先にスラックに書いたものをコピーしているので読みにくいかと思いますがよければ読んでみてください。

Railsチュートリアル7章をやっている方のお役に立てればと思い書きます。
redirect_to(“/users/#{@user.id}“)の書き方をProgateでやったけどチュートリアルでは
rederect_to @userに省略されているが同じ意味という話。個人的に初見でチューリアルの説明でここを理解するのは無理だと思います。ポイント1.RailsのURLはURLヘルパー(下の画像の表)で指定する
2.URLヘルパーには_pathヘルパーと_urlヘルパーがあり基本は_pathヘルパーを使用するがredirectのときは_urlヘルパーを使う。(redirectでは相対パス(pathヘルパー)ではなく絶対パス(urlヘルパー)で指定する慣例がある為)
3.URLヘルパーは省略できる
4.メソッドのURL引数としてモデルオブジェクト(モデルのインスタンスを戻り値として返すオブジェクト)勝手にidを取得してくれるので省略できる
5.Rubyは()を省略できるProgateのこの書き方は相対パスでの指定なので絶対パスにすると
redirect_to(“users/#{@user.id}“) とredirect_to(“http://~~~“)は同じなります。
絶対パスは普通のURLです。
このURLを1.2のURLヘルパーを使って書き換えると
redirect_to(user_url(@user.id))になります。
そして4.の理由でidを省略する。
redirect_to(user_url(@user))
3.の理由で
redirect_to(@user)
5.の理由で
redirect_to @userProgateの書き方は相対パスを使った書き方であったがredirectは本来絶対パスで指定するのが慣例である為チュートリアルでは絶対パスでの書き方になるのだが、URLで長々書くのを省力に省力を重ねた記法だということです。私なりにわかりやすく短めに書いてみました。誰かのお役に立てたら嬉しいです。

 

今後は先にこちらのブログに書いていきます!