更新表格不在表格中

时间:2013-09-02 20:35:05

标签: jquery ajax ruby-on-rails-4 html-table

我正在尝试使用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_&lt;%= @ site.id%&gt;')。replaceWith('&lt;%= escape_javascript(render'site',:site =&gt; @site)%&gt;'); < / p>

1 个答案:

答案 0 :(得分: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>