むじんブログ ”3歩進んで2歩下がる”

37歳未経験からのエンジニア転職を目指す営業部長

学習のアウトプット(ヘルパーメソッド復習)

ヘルパーメソッドの復習。

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 routesURIを確認

→確認したURIHTTPメソッドをform_withに設定すると、フォーム起動時に

その内容でリクエストがなされる。

(先にform_withURIHTTPメソッドを作成してから、対応するルーティングを

作る流れでも良いようで、カリキュラムではその順番で行なっていた。

ただし、ルーティング部分を作成しないとrails routesでは出てこない)

 

※メソッドの記述は、postの時は省略することができる。

 

・フォームの内容

doからendの中に記述する。

text_fieldsubmitもフォーム部品のヘルパーメソッドで、ブロック変数の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アクションに送信される。

わざわざURIHTTPメソッドを指定しなくて良くなるので便利

 

また、フォーム自体が判断を行なってくれるので、部分テンプレート化して、

editなど他のアクションと記述を共通化するなどの活用もできる。

(カリキュラム「pic tweet 〜ツイートを編集しよう〜」に挙げられている動画が

分かりやすい)

 

-----------------------------------------------------------------------------------

【link_to】

ルーティングを先に作っておき、

リクエストを送って動かしたいルーティングに基づいてパスを入力する。

 

・リンク先をURLで指定する場合

<%= link_to 'リンクに表示する文字', 'リンク先のURL' %>

 

・リンク先をパスで指定する場合

<%= link_to 'リンクに表示する文字', 'パス', method: :HTTPメソッド %>

※パスで指定する場合、デフォルトのHTTPメソッドはGETになり、

省略することもできる。

パスとはrails routesの「URIパターン」のことで、Prefixではない。