パスを使ったform_forの書き方についてです。
いや、書き方というよりは基本の性能と考え方みたいなのを紹介します。
内容は初学者向けです。
form_forとは、Railでフォームタグを簡単に作成するためのメソッドです。
新規投稿とか、編集画面作成で送信ボタンを押して登録みたいな時にも使います。
form_forについて
Railsでアプリケーションを作成する際に、ほぼ必須のヘルパーですね。
似たヘルパーにform_tagがあります。こちらもフォームタグを作成するメソッドです。
モデルに基づくformには、form_forを使い・・
モデルに基づかないformには、form_tagを使用することが多いです。
例えばユーザーの登録や情報の更新機能にはform_forを、検索機能にはform_tagを使用するなどといったように使い分けます。
Railsのform_forの書き方
form_forは以下のように書きます。
<%= form_for(モデル,[オプション]) do |f| %> フォームの中身 <% end %>
モデルの部分には、@userや@postなどモデルオブジェクトを入れます。
オプションでは、送信先のurlやタグの設定(クラスをつけたり、MIMEタイプを指定したり)をします。パスもここで設定します。edit_user_path等、いじりたいパスに向けて下記のform_forの内容を飛ばすイメージでURLやパスを設定します。
Railsでは、自動で送信先の振り分けが行われるので、基本的にurlオプションは操作しなくてよいです。画像を送信したい場合やformタグにクラスをつけたい場合は、以下のように書きましょう。
<%= form_for(@food, url: users_food_path ) do |f| %> <% end %>
こんな感じです。
どんな感じか実際に書いてみる
簡単なフォームを作成します。Postモデルがstring型でcontentというカラムをもっているとして、フォームを書いてみましょう。
<%= form_for(@food, url: users_food_path ) do |f| %> <%= f.label :content %> <%= f.text_field :content %> <%= f.submit "送信する" %> <% end %>
f.とすることで、ポストモデルとlabelやテキストボックス(text_field)を紐づけることができます。f.labelは、contentのラベルタグを生成しf.text_fieldは、contentのテキストボックスを生成します。f.submitがこのフォームの送信ボタンを作成しています。
resouceを使ったモデル記述はurlのところを書かなくても自動で判断してくれるみたいです。
お時間あるときにでも試してみましょう。
ではでは。
コメント