「HerokuではじめるRailsプログラミング入門」5章 リロードしないとupdateが成功しない問題の解消

「HerokuではじめるRailsプログラミング入門」5章 リロードしないとupdateが成功しない問題の解消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のバージョン)、わかりませんがとりあえず解消ということで。

Pocket
LINEで送る

You may also like...