我正在尝试使用 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) %>');