form_withでurlとmodelを同時に記述する理由

  • 入力された情報をデータベースに保存しない時の記述です
<%= form_with url: "パス" do |form| %>
  フォーム内容
<% end %>
  • 入力された情報をデータベースに保存する時の記述です
<%= form_with model: モデルクラスのインスタンス do |form| %>
  フォーム内容
<% end %>
urlとmodelを同時に記述する

以下は、url: donations_pathという記述で送信先のpathを明示する必要があります。urlオプションでpathを明示しないと、form_withはmodelオプションで渡されたモデル名をもとに自動的にpathを判断してしまうためです。

<%= form_with(model: @user, url: donations_path, local: true) do |form| %>
  <h1>ユーザー名を入力してください</h1>

  <div class="field">
    <%= form.label :name, "名前(全角)" %>
    <%= form.text_field :name %>
  </div>

 <div class="field">
    <%= form.label :nickname, "ニックネーム(半角英数)" %>
    <%= form.text_field :nickname %>
  </div>

  <div class="actions">
    <%= form.submit "寄付する" %>
  </div>

<% end %>

pikawaka.com