10000hの技術メモ

この先生きのこるための勉強内容&時間記録

Ruby on Rails Ⅲ 2章 scaffoldのコードに近付けよう(2)

20170303@home Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]

目次

form_for

form_forヘルパーを使うと、form_tagヘルパーを使うときと比べてより簡単に作ることができる・・・?

form_forの書き方は

<%= form_for(インスタンス) do |f| %>

<% end %>

fのところは、こう書く。

form_forの中身を書こう

`form_forの中身のフォームも、ヘルパーで簡単に書けるらしい。

例えば

<%= form_for(@note) do |f| %>
  タイトル
  <%= f.text_field :title, class: "form-control" %>
  内容
  <%= f.text_area :content, class: "form-control" %>
  <%= f.submit "保存", class: "btn" %>
<% end %>

パーシャルを作ろう

↑ではなく。

new.html.erbでは@noteがデータベースに保存されていなかった。(これから新規に作るので)

→じゃあedit.html.erbだったら?既存の@noteのタイトルとコンテンツを引っ張ってこないといけない。

form_forの引数オブジェクトが既にDBに保存されている場合、createアクションではなくupdateアクションへのパスが自動的に設定される。

つまり、editのほうでは何か違った書き方をしなければいけないわけではない。

そのため、new.html.erbedit.html.erbのコードのうち、form_forの部分が全く一緒になる。それならまとめたい。

そこでパーシャル

ビューファイルのコードの重複を取り除いたり、見やすくしたりするために、コードの一部分を抜き出したファイルのことを「パーシャル」と呼びます。

なるほど。

  • パーシャルのファイル名はアンダーバーから始まる。
  • パーシャルはrenderメソッドでrender 'フォルダ名/パーシャル名'で。

updateメソッド

フォームの送信先のupdateアクション、scaffoldで生成されたほうはupdateメソッドを使っている。

updateメソッドは

update(title: 値, content: 値)

のように、引数にハッシュをとることができる。

クリアー。

今回の勉強時間:45分 累計勉強時間:9時間44分