2011-07-22 61 views

回答

0

这听起来像是你想要从单一的HTML页面上的2种不同的形式获取数据。如果我正确理解你的话,这在后端是不可能的。当浏览器提交表单时,它只会提交该单一表单的字段。如果你想分享2种不同形式之间的值,则需要使用JavaScript来要么...

  1. 使用一个单一的形式和动态添加/删除字段,并设置操作URL
  2. 复制从非领域 - 当用户点击提交时(在浏览器实际发送请求之前)提交的表单提交表单。
  3. 从字段中获取数据并合并在一起,然后通过AJAX发送请求并将浏览器重定向到结果页面(或者对结果做其他操作)。

有意义吗?

编辑:

关于你的评论说,选择2为你工作,这是非常简单的:

$('#form-1').submit(function(){ 
    $('#form-2 [name]:not([type="submit"])').appendTo(this); 
}); 
+0

第二个是我需要的 –

0

我没有太多的细节,但你可以做到这一点的一种方式,无论的形式是通过jQuery从文本字段中提取数据,然后对控制器进行AJAX调用:

因此,在您的application.js中,您可以这样做:

$.ajax("/controller/action", { 
    cache: false, 
    data: { 
    _method: "POST", 
    textfield-data-param: (textfield-data) 
    }, 
    success: function (jqXHR, status) { 
    //Do something on a success 
    }, 
    complete: function (jqXHR, status) { 
    //do something on complete 
    }, 
    type: "POST" 
}); 

在你的控制器,你可以这样做:

def action 
    @data = params[textfield-data-param] 

    respond_to do |format| 
     if @data.save 
     format.js { head :ok } 
     else 
     format.js { head :unprocessable_entity } # Maybe find a better status code to use. 
     end 
    end 
    end 

对不起,它是一个非常宽泛的答案,但希望它会给你一个领先。

相关问题