1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

記事投稿キャンペーン 「Rails強化月間」

【Rails】form_withメソッドでURL指定が必要な場合

Posted at

Railsのform_withヘルパーメソッドとURLの指定

Railsのフォーム作成において、form_withヘルパーメソッドは非常に便利ですが、URLの指定が必要な場合とそうでない場合があります。以下に、form_withヘルパーメソッドでURLの指定が必要なケースを説明します。

基本の使い方

基本的に、form_withヘルパーメソッドはURLの指定が必要ありません。以下は典型的な使用例です。

<%= form_with model: @article, local: true do |form| %>
  <!-- フォームの内容を定義 -->
<% end %>

この場合、フォームは@articleというモデルと関連付けられ、自動的に適切なURLが生成されます。ただし、いくつかの特別なケースではURLの指定が必要になります。

ModelとControllerの名称が異なる場合

モデルとコントローラーの名前が異なる場合、form_withは自動的にURLを推測できません。この場合、URLを明示的に指定する必要があります。

<%= form_with model: @plan, url: calendars_path, class: 'form' do |f| %>
  <!-- フォームの内容を定義 -->
<% end %>

この例では、@planモデルを使用しているが、コントローラーの名前がcalendarsControllerであるため、urlパラメータで正確なURLを指定しています。

application_recordとモデルの紐づきがない場合

Railsのモデルは通常ApplicationRecordを継承しています。しかし、モデルがこの標準的な紐づきを持っていない場合、URLの指定が必要です。
確認を行う際はビューファイルでなくモデルファイルの1行目を確認しましょう。

まとめ

form_withヘルパーメソッドは通常、モデルを使用してURLを自動的に生成しますが、モデルとコントローラーの名前が異なる場合や、モデルがApplicationRecordと紐づいていない場合にはURLの指定が必要です。URLを指定することで、正確なフォームのアクションを設定できます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?