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

时间:2014-07-16 02:30:32

标签: ruby-on-rails ruby

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

使用锚标记(链接)而不是普通按钮

提交表单的最简单方法是什么
<%= f.submit 'Search', :class => "button expand"%>

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

3 个答案:

答案 0 :(得分:9)

我经常使用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将阻止默认表单提交行为。

答案 1 :(得分:4)

提交

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

我不确定submit按钮对链接有什么特殊的特征 - 它基本上调用submit操作,链接不能(info):

enter image description here

-

链接

这意味着如果您希望用链接替换提交按钮,您基本上必须模仿应用程序中的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 %>

答案 2 :(得分:0)

这很简单:

然后:

<%= 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因此可能存在一些语法错误。随意请求更多帮助。