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

Chr*_*ine 7 ruby ruby-on-rails

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

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

<%= f.submit 'Search', :class => "button expand"%>
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*s.V 9

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

$(".submit-btn").click(function(event) {
  event.preventDefault();
  $("#form-id").submit();
});
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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


Ric*_*eck 5

提交

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

我不确定submit按钮在链接上到底有什么特殊特征- 它本质上调用submit了链接不能(info)的操作:

在此处输入图片说明

——

关联

这意味着如果您想用链接替换提交按钮,您基本上必须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 %>
Run Code Online (Sandbox Code Playgroud)