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