0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】form_withモデルニカONE {PIECE of cake}アイランド編【初心者です】

Posted at

form_withの今の認識

※間違っている可能性があります

viewからcontrollerに送るヘルパーメソッド、
モデルを入れると、viewがnewならcreateへ、
viewがeditならupdateへ良き塩梅で行ってくれる。
良き塩梅に行ってくれるため、
新規作成の時と編集画面の時で_formのようにviewをフォーム配下でまとめられたりする。
良き塩梅で行ってくれるとなんでまとめられるのかって?
newの時urlでcreateに繋げちゃった世界線で考えてみて下さい、
editの時におんなじ感じで書くし、まとめよって思いますよね?
createいってまうて!おいだるいて!ってなるでしょ?
痒い所に手が届く、そんなヘルパーメソッドだと思ってます。

form_with使い方

<%= form_with @ニカ do |d| %>
<%= d.hidden_field :ヒトヒトの実 %>
<%= d.submit 'ゴムゴムの実' %>
<% end %>

これがform_withの使い方です。
今回の場合form_withを用いて、
dに隠されたヒトヒトの実をゴムゴムの実で伝えて、モデルニカで送ってます。
もっともふざけたform_withですね。

ついでに

本当に知らない人向けに、ちゃんとしたのも置いておきます。

<%= form_with @モデル do |f| %>
#ここにf.でモデルに送るものを選択したり入力させる場所を入れる
<% end %>

こんな感じになってます。
つまり上のふざけたform_withでは
hidden_field :表示はされないがモデルに送りたい時使うメソッド
submit 送信ボタン
この二つをcontrollerに送っているということです。
つまり隠されたヒトヒトの実をゴムゴムの実で伝えて、モデルニカでcontrollerに送っている。
そういうことです。
ちなみにこのf.の一族は他にも、
こんなのがあるよって友達のChatGPTが言ってました。

text_field: テキスト入力フィールドを生成します。
password_field: パスワード入力フィールドを生成します。
email_field: メールアドレス入力フィールドを生成します。
phone_field: 電話番号入力フィールドを生成します。
number_field: 数値入力フィールドを生成します。
date_field: 日付入力フィールドを生成します。
time_field: 時刻入力フィールドを生成します。
datetime_field: 日付と時刻入力フィールドを生成します。
text_area: テキストエリアを生成します。
select: セレクトボックスを生成します。
collection_select: コレクションからセレクトボックスを生成します。
check_box: チェックボックスを生成します。
radio_button: ラジオボタンを生成します。
file_field: ファイルアップロードフィールドを生成します。
hidden_field: 非表示のフィールドを生成します。
submit: 送信ボタンを生成します。

良き塩梅のものを使っていきたいですね。

使っていて最近思ったことと、それの腹落ち

form_tagとform_forがなくなってform_withに統一されたと歴史の教科書で読みました。
form_with url:'飛びたいurl'みたいにurlで直接も飛べる、
それを聞いた時には便利だなって思いました。
でも使っているとモデルに絶対送るのにわざわざなんでurlで送るんや?
newからupdateに送ったりする時があるんか?
そう疑問に思いました。
そして良き友のChatGPTに聞いてみました。
そしたらこういう時はモデルに送らないでしょ?って言われて腹落ちしました。

検索フォーム: ユーザーがデータを検索するためのフォームは、通常モデルに紐付いていません。検索結果を表示するためのフォームを作成する場合、form_withを使用しますが、モデルは必要ありません。

お問い合わせフォーム: ユーザーがウェブサイトの管理者にメッセージを送信するためのフォームも、通常モデルに紐付いていません。このようなフォームは、メール送信などのアクションを実行するために使用されます。

カスタムアクションへのフォーム: モデルに紐付いていない特定のアクションに対してフォームを作成する場合、form_withを使用します。たとえば、ユーザーがサイトに新しいページを提案するためのフォームを作成する場合などがあります。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?