2011-07-22 9 views

答えて

0

1つのHTMLページで2つの異なるフォームからデータを取得しようとしているようです。私があなたを正しく理解していれば、これはバックエンドでは不可能です。ブラウザがフォームを送信すると、その単一フォームのフィールドのみが送信されます。あなたは2つの異なる形式の間で値を共有したい場合は、どちらか...

  1. はフィールド以外からの単一のフォームを使用して動的に追加/フィールドを削除し、アクションURL
  2. コピーを設定するためにJavaScriptを使用する必要がありますブラウザが実際にリクエストを送信する前に、ユーザーがサブミットをクリックしたときに送信されたフォームを送信フォームに送信します。
  3. フィールドからデータを取得してマージしてから、AJAX経由でリクエストを送信し、ブラウザを結果ページにリダイレクトします。

意味がありますか?

EDIT:オプション2は、それは非常に簡単です、あなたのために働くだろうとコメントについて

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

2番は私が必要なものです –

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 

申し訳ありませんが、その非常に広範な答えを、うまくいけば、それはあなたがリードを与えるだろう。

関連する問題