2

我正在将一个现有的应用程序移植到 Rails,该应用程序广泛使用程式化的锚点来提交表单:

   <a class="lozenge-button h25 blue" href="#">
      <span class="left"></span>
      <span class="center">Send</span>
      <span class="right"></span>
   </a>

然而,在 Rails 中,这些锚点不适用于 Ajax 表单提交,因为 Rails 的 UJS 似乎需要输入标签而不是锚点(即submit_tag("Submit", remote: true))。

有没有办法让我的主播触发 Ajax 表单提交?我设法让主播通过以下方式提交表单:

$('#my_anchor').click(function() { $(this).closest('form').submit();});

...但它绕过 Ajax 并执行重新加载页面的正常表单提交。

4

3 回答 3

1

我最终以与这个问题非常相似的方式解决了它:

<%= f.submit id: 'hidden_submit_button', style: 'display: none;' %>

<a class="lozenge-button h25 blue" href="#" onclick="$('#hidden_submit_button').click(); return false;">
    <span class="left"></span>
    <span class="center">Send</span>
    <span class="right"></span>
</a>
于 2012-06-12T15:17:01.843 回答
0

在 Rails 中,将 remote:true 添加到链接帮助器方法中。然后 rails_ujs(Rails unobtrusive javascript)负责通过 ajax 发送它。请参阅Rails Ajax 指南,以便您的代码变为(在 ERB 中)

<%= link_to the_rails_path,remote:true,class:"lozenge-button h25 blue" do %>
 <span>etc</span>
 <span>etc</span>
<%end%>
于 2015-02-07T18:44:54.713 回答
0

你可以试试这个

var form = $(this).closest('form');
$.post(form.attr('action'), form.serialize());
于 2012-06-10T17:29:43.580 回答