多个Rails在一个表单中提交按钮(一个远程)

时间:2012-05-03 01:40:36

标签: ruby-on-rails forms action

有没有办法在一个表单中添加两个提交按钮,其中一个请求应该是远程的?我的意思是不使用额外的JS。

我的问题与Rails: Multi-submit buttons in one Form有关,但不同之处在于远程。

3 个答案:

答案 0 :(得分:0)

最简单的方法是在同一页面上有两种不同的表单。见下文。

HelloController中

class HelloController < ApplicationController
  def say_hello
    puts params

    respond_to do |format|
     format.html 
     format.js
    end
  end
end

的routes.rb

TwoForms::Application.routes.draw do
  get "hello/get_ready"
  post "hello/say_hello"

  root to: "hello#get_ready"
end

视图/你好/ get_ready.html.erb

<h2>Regular hello</h2>
<%= button_to "Regular Hello", hello_say_hello_path, name: "regular" %>

<h2>Ajaxy hello</h2>
<%= button_to "Ajaxy Hello", hello_say_hello_path, name: "ajaxy", remote: true %>

视图/你好/ say_hello.html.erb

Success (regular)!

<%= params %>

视图/你好/ say_hello.js.erb

alert("Success (Ajaxy)");

答案 1 :(得分:0)

我认为你可以这样做:

在“远程”提交按钮上创建一个绑定:#remote_btn_submit

$("#remote_btn_submit").on("click", function(){ //click it's not the best bind perhaps input?
  $("#my_form").data("remote", "true");
  //or
  //$("#my_form").attr("data-remote", "true");
});

您还需要在远程提交上使用preventDefault

答案 2 :(得分:0)

我遇到了同样的问题,并在单击相应按钮时使用了this answer中的解决方案通过JQuery将表单设置为远程或非远程。为此,请添加class: 'local-button'class: 'remote-button',提交按钮,id: 'my-form'和表单以及以下代码(CoffeeScript):

$(".remote-button").click ->
  $("#my-form").attr("data-remote", true)
$(".local-button").click ->
  $("#my-form").removeAttr("data-remote")
  $("#my-form").removeData("remote");