2016-04-27 5 views
0

私はDbの情報の数を提出するフォームを持っています。このフォームはモーダルポップアップ上にあります。送信タグをクリックすると、新しいモーダルポップアップが表示されます。このポップアップには、フォーム上に送信されたデータを示す2つのボタンがクリックされています。 コントローラのコールが終了するまで問題はありません。これらのボタンはクリックしても何も行いません。 送信ボタンをクリックすると、フォームのポップアップにスピナーを追加します。応答がtrue/successfulになると、次のポップアップが表示されます。form_tagのレスポンスにどのようにアクセスすればよいですか?

form: 

= form_tag("/system/upload_form", method: 'post', enctype: 'multipart/form-data', remote: true) do 
    ... 
    ... 
    =submit_tag("Submit",id: "submit_button", class: 'btn btn-default') 



controller: 

sys = @system.update!(system_params) 
respond_to do |format| 
    format.js 
    format.json { render :json => sys } 

js: 

$("#submit_button").click(function() { 
    $('#modal_define_system').modal('hide'); // current popup 
    $('#next-page').modal('show'); // next popup 
}); 

今、私はどのように、どこコントローラから返されたJSONオブジェクトまたはsysの値にアクセスすることを知りたい:

私のコードは次のようになります。

私が試した: は、フォームにクラスを追加してから

$('.form_class').bind('ajax:success', function() { 
    console.log(sys); 
}); 

しかしsucceed.Pleseヘルプとアドバイスができませんでした。私はいくつかのコードや説明を追加する必要がある場合はコメント。

答えて

1

remote trueを使用しています.json形式ではなくjs形式でajax要求を送信します。下のようなコントローラーでjsonの代わりにjsonブロックでjsonの応答を表示すると、うまくいくはずです。

respond_to do |format| 
    format.js { render :json => sys } #this will be rendered 
    format.json { render :json => sys } #this won't 
    end 

代わりに、あなたはこのことができますupdate.js.erb

ホープこの

$('#results_div').html("<%= @system.try(:title) %>") 

のようなJavaScriptのファイルをレンダリングすることができます。

+0

申し訳ありませんが、私のupdate.js.erbのsysにアクセスするにはどうしますか? –

+0

インスタンス変数 '@ system'は、既に定義した通りに使用できます。 –

1

maximus 'コードを拡張すると、あなたのケースごとに のフォームを送信することができます。あなたは

 $("#theForm").ajaxSubmit({url: '/system/upload_form', 
    type: 'post'}).success(function(data){ 
    $('#newModalContainer').html(data); 
    }); 

を試してみて、あなたのコントローラでは、あなたはインスタンス変数で渡すことができ、あなたの提出した値で表示したいあなたのモーダルのHTMLをレンダリングすることができます。

 def upload_form 
     #your logic 
     render :partial => 'new_modal_to_show' 
    end 

よう 何かが、この一般的な構造であり、あなたがあなたの関連する値に変更することができます。希望する:-)

+0

これは私の現在の実装を変更する必要があることを意味しますか?ここでフォームタグ –

+1

にコントローラリンクを追加しました。送信ボタンをクリックしてフォームを送信してください。同じページで回答を得て、部分的に表示します。また、js形式で応答することで@maximusの解決策を見つけ、そこに変数を設定することもできます。 –

関連する問題