0

AJAX / jQuery を使用して、テーブルの行を追加、削除、および更新しようとしています。追加および削除機能は正常に機能します。ただし、行を更新しようとすると、フォームはパッチ要求を作成しません (または実際には何もしません - サーバー ログ、JS コンソール、またはネットワーク アクティビティにアクティビティはありません。行の場合、ユーザーはボタンをクリックして、更新フォームを含む行ですが、フォームでデータが変更され、ユーザーが送信をクリックしても何も起こりません.テーブルからフォームを取り出すと、それは機能します.テーブルでこれを行うことに問題はありますか?助けてくれてありがとう!

これが私が使用しているform_tagです。

<tr id = <%= "site_#{@site.id}" %>
 <%= form_tag site_url(@site.id), method: "patch", remote: true, id: "site_form_#{@site.id}" do %>
 <td><%= link_to (image_tag @site.favicon), "http://www.#{@site[:company].delete(" ")}.com", target: "_blank" %><%= text_field_tag :company, @site.company %></td>
 <td><%= text_field_tag :username_sb, (@site.username_sb.decrypt ENV['SB_DECRYPT']) %></td>
 <td><%= text_field_tag :pwhint_sb, (@site.pwhint_sb.decrypt ENV['SB_DECRYPT']) %></td>
 <% hidden_field_tag :id, @site.id %>
 <td><%= button_tag "Submit", class: "btn btn-inverse" %></td>
 <td></td>
 <% end %>
</tr>

これが挿入されるテーブル全体です。

<div class= "row-fluid">
  <div class= "span10 offset1">
    <table class="table table-hover table-condensed">
      <thead>
        <tr>
          <th>Company</th>
          <th>Username</th>
          <th>Password hint</th>
          <th> </th>
          <th> </th>
        </tr>
      </thead>
      <tbody>
        <tr id="add">
          <%= render 'form_new', :site => Site.new %>
        </tr>
       <% @sites_sort.each do |site| %>
     <%= render 'site', :site => site %>
    <% end %>
  </tbody>
</table>

行を編集フォームに変換するために使用しているjQueryを次に示します。

$('#site_<%= @site.id %>').replaceWith('<%= escape_javascript(render 'edit_one_form') %>');

ビューを更新するために使用しているjQueryを次に示します。(このコードには決して到達しませんが)

$('#site_<%= @site.id %>').replaceWith('<%= escape_javascript(render 'site', :site => @site) %>');

4

1 に答える 1

0

td html タグの開始と終了によるフォームの分離により、JS で挿入した後にフォームが適切に送信されませんでした。代わりに、各サイトを独自のテーブルとしてレンダリングしたため、代わりに更新機能によって 1 つのテーブルが削除され、その場所にフォームが挿入され、jQuery / AJAX を介して更新されたテーブルが再レンダリングされました。

<table class="table table-hover table-condensed" id="site_table_<%= site.id %>">
  <tr class = "rowhover" id="site_<%= site.id %>">
    <td id="td_company_site" class="cell cell-vert-align"><strong>
        <%= link_to (image_tag site.favicon, class:"site_favicon"), "http://www.#{site.site.gsub("http://www.","")}", target: "_blank" %>
        <%= link_to " #{site[:company]}", "http://www.#{site.site.gsub("http://www.","")}", target: "_blank" %></strong>
    </td>
    <td id="td_username_site" class="cell cell-vert-align"><%= site.username_sb.decrypt ENV['SB_DECRYPT'] %></td>
    <td id="td_pwhint_site" class="cell cell-vert-align"><%= site.pwhint_sb.decrypt ENV['SB_DECRYPT'] %></td>
    <td id="td_edit"><%= link_to '<i class="icon-edit"></i>'.html_safe, edit_site_url(site.id), class: "btn btn-warning button-hover btn-small", remote: true %></td>
    <%= form_tag site_url(site.id), remote: true, method: "delete" do %>
      <%= hidden_field_tag :user_id, current_user.id %>
      <%= hidden_field_tag :site_id, site.id %>
    <td id="td_delete"><%= button_tag '<i class="icon-remove"></i>'.html_safe, class: "btn btn-danger button-hover btn-small", id: 'new' %></td>
    <% end %>
  </tr>
<table>
于 2014-02-26T04:02:48.650 に答える