LoginSignup
0
1

More than 3 years have passed since last update.

Ruby on Railsのformについて

Posted at

最初に

formの使い方が曖昧だったので勉強致しました。
至る所で紹介されていることで、個人的なアウトプットですので、ご了承ください。

formの使い分けについて

formは3種類が存在していますが、使い分けが曖昧でした。

・form_tag
モデルがない時に使用します。
使用例で言うと検索フォームです。

・form_for
データのモデルがある時に使用します。
使用例で言うと投稿フォームです。

・form_with
記述次第で「form_tag」と「form_for」の両方の使い方ができます。
現在のバージョンで推奨されている書き方です。

form_tagの基本構文

form_tagを使うときは基本的にアクション属性とHTTPメソッドを指定します。

<div>
  <%= form_tag (action: :index, method: :post) do %>
    <input type="text" id="name">
    <input type="submit">
  <% end %>
</div>

form_forの基本構文

form_forはインスタンス変数を引数として渡します。
さらにHTMLのinputタグは使わず、フォームのビルドヘルパー(form.hoge)を使用します。

controller
def new
  @user = User.new
end
view
<%= form_for(@user) do |form| %>
  <%= form.text_field :name %>
  <%= form.submit %>
<% end %>

form_withの基本構文

・form_tagの様な書き方

<%= form_with url: users_path do |form| %>
  <%= form.text_field :email %>
  <%= form.submit %>
<% end %>

・form_forの様な書き方
form_withはデフォルトでAjax

<%= form_with model: @user, local: true do |form| %>
  <%= form.text_field :email %>
  <%= form.submit %>
<% end %>

最後に

まだまだ覚えないといけない書き方がたくさんありますが、少しずつ覚えていきます。

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