学習のアウトプット(ヘルパーメソッド復習)
ヘルパーメソッドの復習。
form_withとlink_toが以前から苦手だったが、今回の復習とまとめで理解が出来た。
【ヘルパーメソッド】
HTMLでタグを出現させたり、テキストを加工させたりするのに使うメソッドで、
主にビューで使う。
ヘルパーメソッドは、使える時には基本的には使った方が良い。
(記述がシンプルになるのと、セキュリティ上の問題のため)
【form_withについて(復習)】
・form_withの書き方
<%= form_with url:”○○”,method: :HTTPメソッド(デフォルトはpost), local: true do |form| %>
<%= form.text_field :content %>
<%= form.submit ‘投稿する’ %>
<% end %>
ルーティングとコントローラーアクションを予め作成し、rails routesでURIを確認
→確認したURIとHTTPメソッドをform_withに設定すると、フォーム起動時に
その内容でリクエストがなされる。
(先にform_withのURIやHTTPメソッドを作成してから、対応するルーティングを
作る流れでも良いようで、カリキュラムではその順番で行なっていた。
ただし、ルーティング部分を作成しないとrails routesでは出てこない)
※メソッドの記述は、postの時は省略することができる。
・フォームの内容
doからendの中に記述する。
text_fieldやsubmitもフォーム部品のヘルパーメソッドで、ブロック変数のformと
組み合わさることでフォーム部品を生成することができる。
(部品部分のヘルパーメソッドは検索すればすぐに出てくるので覚えなくて良い)
フォーム部品のヘルパーメソッド |
用途例 |
text_field |
1行のテキストボックス |
password_field |
パスワード入力ボックス(入力したテキストがアスタリスクなどに置き換えて表示される) |
check_box |
チェックボックス(複数選択可能) |
radio_button |
ラジオボタン(複数の中から1つしか選択できない) |
submit |
送信ボタン |
表ではsubmit以外で、ヘルパーメソッドの引数にname属性に当たる名前が入る。
これがデータを扱う際の名前であるキーになる。
local trueは、リモート通信機能であるAjaxをオフにする為に記述している。
(今は必要ない為)
-----------------------------------------------------------------------------------
【form_withのmodelオプション】
form_withでは、modelオプションに指定されているインスタンス変数の状態によって
リクエストを送るアクション先を判断している。
例えばnewアクションで定義した空のインスタンス変数がmodelオプションで
指定されていた場合、フォーム実行時はcreateアクションに送信される。
→わざわざURIやHTTPメソッドを指定しなくて良くなるので便利
また、フォーム自体が判断を行なってくれるので、部分テンプレート化して、
editなど他のアクションと記述を共通化するなどの活用もできる。
(カリキュラム「pic tweet 〜ツイートを編集しよう〜」に挙げられている動画が
分かりやすい)
-----------------------------------------------------------------------------------
【link_to】
ルーティングを先に作っておき、
リクエストを送って動かしたいルーティングに基づいてパスを入力する。
・リンク先をURLで指定する場合
<%= link_to 'リンクに表示する文字', 'リンク先のURL' %>
・リンク先をパスで指定する場合
<%= link_to 'リンクに表示する文字', 'パス', method: :HTTPメソッド %>
※パスで指定する場合、デフォルトのHTTPメソッドはGETになり、
省略することもできる。
※パスとはrails routesの「URIパターン」のことで、Prefixではない。