使用链接而不是按钮提交Rails 4表单

我看到一些类似的问题,但它们似乎是人为的,主要是针对以前版本的Rails。

使用锚标记(链接)而不是普通按钮提交表单的最简单方法是什么

 "button expand"%> 

什么是最简洁的方法(最佳实践)方式将其更改为提交的链接?

我经常使用js / jquery来提交表单。 如果提交按钮位于表单之外,或者如果有多个按钮提交相同的表单,则非常有用。

 $(".submit-btn").click(function(event) { event.preventDefault(); $("#form-id").submit(); }); 

event.preventDefault(); 阻止默认按钮/提交行为。

这是我在rails 4项目中使用的coffeescript示例:

 ready = -> if $("#form-id").length > 0 $(".submit-btn").click (event) -> event.preventDefault() $("#form-id").submit() $(document).ready ready $(document).on "page:load", ready 

另请注意,这种方式链接可以是任何类型的元素 – 不一定是提交按钮。 您不必在表单中包含提交按钮,但如果您执行,则preventDefault将阻止默认表单提交行为。

提交

要扩展已提供的答案,必须使用submit按钮提交HTML表单。

我不确定submit按钮对链接有什么特殊的特性 – 它本质上是调用submit操作,链接不能( 信息 ):

在此处输入图像描述

链接

这意味着如果您希望用链接替换提交按钮,您基本上必须模仿应用程序中的submit方法。 这可以用JS(JQuery)来完成:

 #app/assets/javascripts/application.js $(document).on("click", "#your_link", function(){ $("#form").submit(); }); #app/views/controller/your_view.html.erb <%= form_tag your_path, id: "form" do %> <%= link_to "Submit", your_path, id: "your_link" %> <% end %> 

这很简单:

然后:

 <%= f.submit '', :class => "hidden", :id => 'form_submit_button' %> content_tag(:a, 'Submit', :name => 'submit', :id => 'submit_link') 

在JS中:

 $(document).ready(function() { $(document).on("click","#submit_link",function() { $('#form_submit_button').click(); }); }); 

我不确定确切的sytax所以可能会有一些语法错误。 随意请求更多帮助。