どんどん内容が難しくなり、
「もうイヤだ!わかんない!!」
と叫びながら全力で床に転がって駄々をこねたい衝動に駆られながら、なんとか耐えている もそ。
『これが終わったら一旦休み...』と自分に言い聞かせつつ、今日はform_forメソッドとネストについて書いていきます。
form_forとは
form_forはへルパーメソッドのひとつで、特定のモデルを編集/追加するためのフォームを生成します。
モデルの新規インスタンスに値を追加して保存するので、投稿フォームなどに利用します。
たとえばフォームに入力された値は、投稿ボタンを押した瞬間にReviewクラスの新規インスタンスにそれぞれの属性の値としてセットされ、そのままreviewsテーブルに保存されます。
映画のレビューサイトのようなものを例にして図解してみましょう。
投稿ボタンを押した瞬間に、インスタンスを処理してくれる便利機能といったイメージです。
ネストとは?
ネストは、ある記述の中に入れ子で別の構造を記述すること。
doとendで挟んで記述します。
先ほどform_forは投稿フォームなどで使う、と言いました。
仮に映画のレビューサイトだったとすると、たとえばレビューを書くときに
「いま書かれているレビューは、どの作品のレビューになるのか?」というデータの紐づけが必要ですよね。
この場合、レビューの対象になる作品がないと、レビューは迷子になってしまいます。
たとえば
eiganoreviewsite/product219/review
このようなURLだった場合、作品名"product219"が親、/右側の"review"は子の関係になります。
form_forタグでネスト構造にするときは、この親子関係を指示することで、レビューが迷子にならないようにします。
イメージ的にはこんな感じ。
ネスト1つにつき親と子でそれぞれインスタンスが一つずつ、合計2つあるという考え方になります。
なのでネストが2つの場合は今回の図が親-子-孫の三者になり、インスタンス変数は3つあるというわけです。
わかりにくく混乱しやすいネストとform_forメソッドの関係、これで少しは分かりやすくなったでしょうか。
自分のつくったサイトではなく、見本のサイトをみて「情報が更新されない?!」とアホなことをして先輩を困惑させたもそ、果たしてRailsを使いこなせる日は来るのか...続く。