軽く自己紹介
大学一年生で現在rails tutorailをやっており、復習も兼ねて、理解がうまくできていないところを中心にまとめていく。自分も同様、rails初心者向けの記事となる。
2年前の記事ですが、別の方が書いているのがあるのでこの記事で理解できなければみてください。(参考にしている部分、結構あります)
http://qiita.com/kanpe777/items/c5154b58c852855deefc
そもそも引数とは。
ググると 『数学における関数やコンピュータプログラムにおける手続きにおいて、その外部と値をやりとりするための特別な変数、あるいはその変数の値のことである。』と書いてあります。
redirect(リダイレクト)とは。
指定したウェブページから自動的に他のウェブページに転送されること。
典型的な例
redirect_to root_url
redirect_to action: 'index'
今までの話通り、その一文によって、actionを起こした時にroot_url, indexのページに飛ばされます。
@userの場合は?
rails tutorialでは何度も
redirect_to @user
と出てきます。@userとはどこに飛ばされるのでしょうか。
その前にtutorial上では
redirect_to user_url(@user)
と同じ意味だと書かれています。
この2つの意味についてtutorial上では全く記載がありません。
userなのだからidとか指定しなくてええの?と自分は疑問に思いました。
調べていくと、
redirect_to "/users/#{@user.id}"
を簡略化したものだということがわかりました。
*redirect_toでPOSTはできないことに関してはまた別の記事にまとめたいと考えています。
redirect_back_or(default)とは。
簡単にいうと先ほどのredirect_toに条件をつけてあげることです。
ユーザが居た場所を覚えていればその場所に、無ければデフォルトに飛ばす、みたいな感じで使うことができます。
def redirect_back_or(default)
redirect_to(session[:return_to] || default)
session.delete(:return_to)
end