传递另一个表单的文本字段的值

时间:2011-07-22 21:01:07

标签: ruby-on-rails ruby-on-rails-3 forms parameter-passing

做了一些谷歌搜索没有成功。我试图在另一个表单的文本字段中获取当前值的值,并将其传递给控制器​​。有关最佳方式的任何想法吗?

2 个答案:

答案 0 :(得分:0)

听起来您正试图在一个HTML页面上从两种不同的表单中获取数据。如果我理解正确,后端就无法做到这一点。当浏览器提交表单时,它只提交该单个表单的字段。如果您想在两种不同的表单之间共享一个值,则需要使用JavaScript ...

  1. 使用单个表单并动态添加/删除字段并设置操作网址
  2. 当用户点击提交时(在浏览器实际发送请求之前),将字段从未提交的表单复制到提交的表单。
  3. 从字段中获取数据并将其合并在一起,然后通过AJAX发送请求并将浏览器重定向到结果页面(或对结果执行其他操作)。
  4. 有意义吗?

    修改

    关于您的评论,选项2对您有用,这非常简单:

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

答案 1 :(得分: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

很抱歉,这是一个非常广泛的答案,但希望它能带给你一个领先优势。