0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ヘルパーメソッド(form_with)について

Posted at

はじめに

ポートフォリオを作成するためにオリジナルアプリを作成しております。
少しHTMLの学習から離れていたため、復習として投稿させていただきます。

なぜヘルパーメソッドを使うのか?

  • パスの指定やRubyの埋め込みなどの記述がシンプルになる
  • セキュリティ上の問題を解消する

以上の2点が主な理由になります。

ヘルパーメソッドの一例

ヘルパーメソッド 説明
form_with 投稿ページなどにおけるフォームの実装
link_to リンクの実装
これ以外にもたくさんのヘルパーメソッドが存在します。
コントローラー作成時に毎回生成される〇〇_helper.rbファイルを使用することにより、カスタムすることも可能です。

form_withメソッドとは?

フォームを実装するためのヘルパーメソッドです。
HTMLでformタグを使用することがありますが、その代わりに使用する事ができます。

HTMLで記述した場合

<form action="/tweets" method="tweet">
  <input type="text" name="fix__content">
  <input type="submit" value="修正する">
</form>

ヘルパーメソッドを用いて記述した場合

<%= form_with url: "/tweets", method: :tweet, local: true do |form| %>
  <%= form.text_field :fix__content %>
  <%= form.submit '修正する' %>
<% end %>

ヘルパーメソッドはRubyとして取り扱われるので、それを表示するために<%= %>で囲んで使用します。
form_withは、doからendまでの間がフォームの記述になります。
したがって、do〜endの間に、表示される投稿フォームの内容を記述していきます。

指定する引数について

<%= form_with url: "/tweets", method: :tweet, local: true do |form| %>
部品 説明
urlオプション リクエストのパスを指定する。
methodオプション リクエストのHTTPメソッドを指定。postを指定する場合は省略できる。
localオプション リモート送信(Ajax)を無効にするかどうかを指定。trueで無効になる。

url: "/posts", method: :post, local: trueという記述はオプションと呼ばれています。
それぞれフォームがどのような動作を行うかを決めています。

フォーム部品の主なヘルパーメソッド

部品 用途  
text_field テキストボックス
password_field パスワード入力ボックス(入力テキストがアスタリスク等に置かれて表示)
check_box チェックボックス(複数選択可能)
radio_button ラジオボタン(複数の中から1つしか選択できない)
submit 送信ボタン
この表のsubmitを除いて、これらのヘルパーメソッドの引数には、name属性にあたる名前が入ります。
name属性の値が、データを扱う際の名前であるキーになります。

おわりに

form_withに関して、自身ではまだまだわからないところが多くあります。
今回は理解できた部分だけを抜粋した基礎的な記事になります。
また間違いなどございましたら、コメントいただけると幸いです。
お手数をおかけしますが何卒よろしくお願いします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?