_urlと_pathの違いについて
簡単に申し上げるとurlは絶対パスでpathは相対パスである。
urlについて解説
_urlの形は絶対パスである。例えば、
new_user_url
という書き方は http://localhost:3000/users/new
と書くのと同意である。
リダイレクトではHTTPの性質上、完全なURLが求められるのでredirect_toメソッドの引数はURLで指定するべきである。
逆に言えばredirect_toメソッドの引数でしか_urlという書き方は使われない。
pathについて解説
_pathの形は相対パスである。
new_user_path
という書き方は /users/new
と書くのと同意である。
_pathという形は基本的にredirect_to以外で使うと覚えておけば良い。
例えばform_withやlink_toなど。
「redirect_to @post
」という書き方(上級者向け)
redirect_to post_url(@post)
という書き方をredirect_to post_url
という書き方に省略できる。またredirect_to post_url
をredirect_to @post
という書き方に省略できる。
言い換えるとredirect_to post_url(@post)
という書き方はredirect_to @post
という書き方に省略できる!
redirect_to post_url(@post) => redirect_to @post
まとめ
絶対パス
new_user_url => http://localhost:3000/users/new
相対パス
new_user_path => /users/new
_urlでもなく_pathでもなく変数で指定する方法(上級者向け)
redirect_to post_url(@post) => redirect_to @post
以上です!分からないことや気になったことがあればお気軽に言ってください!