DAY14 入力フォームヘルパー メソッド(2)

TOKHEE·2024년 4월 2일

form_with

  • form_with: Rails 5.1+で導入されたフォームヘルパーメソッド。form_forform_tagの機能を統合し、モデルベースのフォームとモデルがないフォームの両方を作成可能。

    • 基本使用法:

      • model: オプションでモデルインスタンスを指定可能。自動的にアクションURLとHTTPメソッドが設定される。
      • url: オプションでフォームデータ送信URLを直接指定可能。
      • local: trueで非同期(AJAX)送信ではなく、通常のHTTPリクエストでフォームデータを送信するように設定。
      <%= form_with model: @article, local: true do |form| %>
        <%= form.text_field :title %>
        <%= form.text_area :body %>
        <%= form.submit %>
      <% end %>
    • モデルがないフォーム:

      • url: オプションでデータ送信パスを指定する必要がある。
      • フォームフィールドを手動で定義。
      <%= form_with url: search_path, method: :get, local: true do |form| %>
        <%= form.label :query, 'Search Query' %>
        <%= form.text_field :query %>
        <%= form.submit "Search" %>
      <% end %>
    • fields_forとの組み合わせ:

      • form_with内で使用し、モデルの関係を反映したネストされたフォームフィールドを簡単に作成。
      • has_manyaccepts_nested_attributes_forの関係に便利。
      <%= form_with model: @person, local: true do |form| %>
        <%= form.text_field :name %>
        
        <%= form.fields_for :addresses do |addresses_form| %>
          <%= addresses_form.text_field :street %>
        <% end %>
      
        <%= form.submit "Save" %>
      <% end %>
  • 要約:

    • form_with: モデルベースとモデルレスのフォームをサポート、デフォルトでAJAXフォームを作成、local: trueで通常のHTTPリクエストによるフォーム送信に変更可能。
    • url:, method: オプションでフォームの送信パスとHTTPメソッドをカスタマイズ可能。
    • fields_forと組み合わせて複雑なフォーム構造とモデルの関係を簡単に扱う。
    • Railsでのフォーム作成時に好まれる方法で、柔軟性と簡潔さを提供。

0개의 댓글