我正在尝试使用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>
答案 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>