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 后正确提交。相反,我将每个站点呈现为自己的表,因此更新函数删除了一个表,将表单插入其位置,并通过 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 回答