今、progateのRuby on Rails5 Ⅳ 「編集機能を完成させよう」をやっています。
そこでform_tagメソッドと<textarea name=""></textarea>が出て来るのですが、イマイチ違いがわかりません。
form_tagメソッドは、フォームに入力されたデータを指定したURLに送れるというもの。
<textarea name="">は、<textarea>タグにname属性を指定すると、入力データを送信することができるというもの。 共に入力されたデータを送っているのですがそれぞれ何が違うのでしょうか。以下、該当コードです ```ここに言語を入力 <div class="main posts-new"> <div class="container"> <h1 class="form-heading">編集する</h1> <%= form_tag("/posts/#{@post.id}/update") do %> <div class="form"> <div class="form-body"> <textarea name ="content"><%= @post.content %></textarea></div> </div> ```<input type="submit" value="保存"> </div> </div> <% end %>
コントローラはこうなってます
def update @post = Post.find_by(id: params[:id]) @post.content = params[:content] @post.save redirect_to("/posts/index") end
個人の考え
個人的にはこれで編集内容が送信されると思ったのですが
<div class="main posts-new"> <div class="container"> <h1 class="form-heading">編集する</h1> <%= form_tag("/posts/#{@post.id}/update") do %> <div class="form"> <div class="form-body"> <textarea ><%= @post.content %></textarea> <input type="submit" value="保存"> </div> </div> <% end %> </div> </div>
結果は /posts/1 と表示されるだけでした。
<textarea>に入力されたデータが送信されてない? form_tagメソッドは、フォームに入力されたデータ(<%= form_tag("/posts/#{@post.id}/update") do %> ~ <% end %>の間の事)を指定したURLに送れるのでは? そもそも「form_tagメソッドは、フォームに入力されたデータを指定したURLに送れる」のフォームってなんの事を指しているのでしょう? 試しにform_tagメソッドだけ記述してみるとフォームなんて表示されてませんでした。 <textarea>を記述すると入力フォームが表示されました。 <textarea name="">が入力フォームに入力された内容を送信するなら、form_tagメソッドはいったい何を送信しているのでしょうか? それぞれ何を送信して何が違うのかご教授お願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/05 10:30
2019/02/05 10:38