Ruby Rails:通过锚定单击提交Ajax表单
我正在将一个现有应用程序移植到rails,该应用程序广泛使用样式化锚来提交表单:Ruby Rails:通过锚定单击提交Ajax表单,ruby,ruby-on-rails-3,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>
<a class="lozenge-button h25 blue" href="#">
<span class="left"></span>
<span class="center">Send</span>
<span class="right"></span>
</a>
。。。但是它绕过了Ajax,执行了一个正常的表单提交来重新加载页面。您可以试试这个
var form = $(this).closest('form');
$.post(form.attr('action'), form.serialize());
我最终以一种非常类似的方式解决了这个问题:
在Rails中,将remote:true添加到link-helper方法中。然后rails_ujs(rails不引人注目的javascript)负责通过ajax发送它。请参阅,这样您的代码将成为(在ERB中)
等
等
当我尝试使用format.html而不是format.js启动控制器操作时,它无法找到模板(表单本身通过.js模板呈现)。
var form = $(this).closest('form');
$.post(form.attr('action'), form.serialize());
<%= 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>
<%= link_to the_rails_path,remote:true,class:"lozenge-button h25 blue" do %>
<span>etc</span>
<span>etc</span>
<%end%>