Rails:通过锚点击提交Ajax表单

时间:2012-06-10 16:01:20

标签: ruby ruby-on-rails-3

我正在将现有的应用程序移植到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并执行重新加载页面的正常表单提交。

3 个答案:

答案 0 :(得分:1)

我最终以与this question非常相似的方式解决了它:

<%= 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>

答案 1 :(得分:0)

你可以试试这个

var form = $(this).closest('form');
$.post(form.attr('action'), form.serialize());

答案 2 :(得分:0)

在Rails中,将remote:true添加到链接辅助方法中。然后rails_ujs,(Rails不引人注目的javascript)负责通过ajax发送它。请参阅The Rails Ajax Guide,以便您的代码成为(在ERB中)

<%= link_to the_rails_path,remote:true,class:"lozenge-button h25 blue" do %>
 <span>etc</span>
 <span>etc</span>
<%end%>