HerokuではじめるRailsプログラミング入門」という本でRailsを勉強しています。慣れようという意図でやってます。
ページをリロードしてから出ないとupdateできない
途中までサクサク、書いていたのですが5章でupdateがどうしても成功しない問題に直面しました。ちとデバッグ方法がまだちゃんとわかってないので、時間がかかってしまったのですが、問題としては、
リロードしてから出ないとformのsubmitを押してもpostが送られない
というところに行き着きました。
問題はformとtableの関係にあった
この問題を調べた所、Stackoverflowで回答が出てきました。
formをテーブルの中に書くとだめぽいということです。
コードで説明
サンプルコード
<table> <form method="post" action="/sample/update"> <tr><th>ID</th><td><%= @result.id %></td></tr> <input type="hidden" name="id" value="<%= @result.id %>"> <tr><th>Age</th><td><input type="text" name="age" value="<%= @result.age %>"></td></tr> <tr><th>Name</th><td><input type="text" name="name" value="<%= @result.name %>"></td></tr> <tr><th>Mail</th><td><input type="text" name="mail" value="<%= @result.mail %>"></td></tr> <tr><th>Tel</th><td><input type="text" name="tel" value="<%= @result.tel %>"></td></tr> <tr><th></th><td><input type="submit" value="送信"></td></tr> </form> </table> <hr /> <a href="/sample/index"><< index</a>
修正後のコード
<form method="post" action="/sample/update"> <table> <tr><th>ID</th><td><%= @result.id %></td></tr> <input type="hidden" name="id" value="<%= @result.id %>"> <tr><th>Age</th><td><input type="text" name="age" value="<%= @result.age %>"></td></tr> <tr><th>Name</th><td><input type="text" name="name" value="<%= @result.name %>"></td></tr> <tr><th>Mail</th><td><input type="text" name="mail" value="<%= @result.mail %>"></td></tr> <tr><th>Tel</th><td><input type="text" name="tel" value="<%= @result.tel %>"></td></tr> <tr><th></th><td><input type="submit" value="送信"></td></tr> </table> </form> <hr /> <a href="/sample/index"><< index</a>
これで行けました。Rails3とRails4の違いなのか(僕の持っているのはRails3のバージョン)、わかりませんがとりあえず解消ということで。