質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

606閲覧

rails 6 で 複数 form_with を生成するとはじめの2つだけ挙動がおかしい

ItsukiN32

総合スコア13

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/05/03 08:16

<% @comments.each_with_index do |comment,index| %>$ <tr id="comment-no-<%= comment.id.to_s %>">$ <%= form_with model: comment, method: "patch", url: user_comment_path(user_id: @user.id, id: comment.id) do |f| %>$ <td class=""><%= index + 1 %></td>$ <td class='content'><%= coment.content %></td>$ <td class='updated_at'><span class="updated-text"><%= comment.updated_at.to_s.split(" +").first %></span><span class="update-btn hidden"><%= f.submit "update" %></span><span class="update-cancel-btn btn hidden"><a href="#">キャンセル</a></span></td>$ <% end %>$

これとは別にJQueryを使って[@class="content"] の中身をクリックしたらフォームが出るようにしています。
上記のコードを使ってコメントが一覧で出てきて、コメントを編集できるような画面を作っています。
form_with に method: "patch" を指定しています。
しかし、なぜか最初の2つだけはPOSTメソッドになり、残りはPATCHメソッドとなります。
目的としては全てPATCHメソッドにしたいのですが、なぜかそうなってしまいます。
生成されたHTMLはおかしな挙動を示す最初の二つは以下の

<form action="/users/1/comment/14" accept-charset="UTF-8" data-remote="true" method="post"></form> <input type="hidden" name="_method" value="nT3pkbEBkVVzHNMAcKEMRruUYSKCVbpZYORZDEneiwKdUDDfLbgW8wGJvrA2VCWYnG/11VKg3iCupOYDT756bA=="> <input type="hidden" name="authenticity_token" value="lscYvB3twk5LPUM8HHsGMCZV9p7QKsg3SB8uxBLNZi2hmDrqfkQkYn0XoLrsT82Sm+HntgHMS1j03k4yL8kXNg=="> <td class="">2</td> <td class="content"><textarea style="width:100%;" name="comment[content]" id="comment-content"></textarea></td> <td class=""><span class="updated-text hidden">2020-04-29 14:58:59</span><span class="update-btn"><input type="submit" name="commit" value="update" data-disable-with="update"></span><span class="update-cancel-btn btn"><a href="#">キャンセル</a></span></td>

ようになり、想定通りの最初の2つ以降のカラムは

<form action="/users/1/comment/20" accept-charset="UTF-8" data-remote="true" method="post"></form> <input type="hidden" name="_method" value="patch"> <input type="hidden" name="authenticity_token" value="oURqI3lownswY5L+UcAYSq8hAcn2yh7GJ32wNWa+WkbK1TeCY/cSlbckwC11wCupWGK5a+zKcsg73t1pITkzyA=="> <td class="">7</td> <td class="content"><textarea style="width:100%;" name="comment[content]" id="comment-content"></textarea></td> <td class=""><span class="updated-text hidden">2020-04-29 14:58:59</span><span class="update-btn"><input type="submit" name="commit" value="update" data-disable-with="update"></span><span class="update-cancel-btn btn"><a href="#">キャンセル</a></span></td>

となります。

<input type="hidden" name="_method" value="patch">

の有無で挙動が変わり、PATCHを想定していても最初の2つはPOSTメソッドになり思った挙動と違っているようです。

なぜこうなるのかが分からないので、諸先輩方、ご教授いただけましたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

form > table input という構成になるのはNGらしく、
table > tr > td > form > input ならOKらしいです。

投稿2020/05/04 09:55

ItsukiN32

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問