【发布时间】:2011-07-19 12:37:09
【问题描述】:
似乎每个人都有这个问题,但没有人有外行的答案,甚至没有适当的解决方案。
我有一个表单,它使用 ajax 提交表单并自动将其添加到文本字段下方的列表中。表单提交了两次,所以我有两个相同的(除了 ID)记录。更糟糕的是,当您尝试删除它时,它不会更新页面,因为它尝试两次删除相同的记录。
我希望有人有一个很好的答案... 顺便说一句,我是 Rails 新手。 代码:
index.html.erb
<h1>SSCC</h1>
<div id="orderline_form">
<%= render 'form' %>
</div>
<ul id="orderlines">
<%= render :partial => @orderlines.reverse %>
</ul>
_form.html.erb
<%= form_for(@orderline, :remote => true) do |f| %>
<div class="field">
<%= f.label :Order_ID %>
<%= f.text_field :order_id %><br/>
<%= f.label :SSCC %>
<%= f.text_field :sscc %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
_order_line.html.erb
<%= content_tag_for(:li, order_line) do %>
<%= order_line.id %> |
<%= order_line.order_id %> |
<%= order_line.sscc %>
(<%= link_to 'Delete', order_line, :confirm => 'Are you sure?',
:method => :delete, :remote => true %>)
<% end %>
create.js.erb
$('#orderlines').prepend('<%= escape_javascript(render(@orderline))%>');
$('#orderlines > li:first ').effect('highlight', {}, 3000);
$('#orderline_form > form')[0].reset();
destroy.js.erb
$('#<%= dom_id(@orderline) %>').css('background', 'red');
$('#<%= dom_id(@orderline) %>').hide("fade", {}, 1500);
【问题讨论】:
-
你能发布 JQuery 部分(你的 .js)吗?
-
我的应用程序 .js 是:jQuery.ajaxSetup({ 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} }) jQuery.fn.submitWithAjax = function() { this.submit(function() { $.post(this.action, $(this).serialize(), null, "script"); return false; });返回这个; }; $(document).ready(function() { $("#update_order").submitWithAjax(); }) $("form").submit(function(){ $('input[type=submit]'). attr('禁用', '禁用'); });
-
其他文件我有我们的标准 jquery、jquery.min、jquery_ujs、jquery-ui 和 rails.js
标签: jquery ruby-on-rails ruby-on-rails-3 form-submit