いつもお世話になっております。
この度は、Railsであるコントローラのアクションへajax通信をする時に、その処理の前に別のajax処理を走らせたいのですが、その方法がわからないためこちらでお聞きしたいと思います。
##前提
ItemsControllerというコントローラがあります。
ItemsControllerには、newアクションとupdateアクションがあり、それぞれitemを追加するアクションと、既存のitemを保存更新するアクションです。
items#newにはrailsのviewにformを用意してます。
items#updateにはviewにformはなく、javascriptでsaveItems()という関数を定義して、ajax通信でitemの数だけitems#updateにリクエストを送って保存更新しております。
##問題
上記した通り、itemという単位があり、itemは追加ボタンを押すとitems/newアクションが走り、どんどん画面上に非同期で追加することができます。
しかし、1つのitemには複数のinput fieldがついており、そのinput fieldになんらかの入力をした状態で追加ボタンを押すと画面全体が再描画されてしまい、入力していた文字は消えてしまいます。
追加するまでに(items#newが走るまでに)、保存されているitem(items#updateされたitem)は消えません。
##実現したいこと
itemを追加する時点で、保存していないitemのinput タグに入力されていたものはすべてitems#newのajax再描画の処理で消えてしまうので、items#newの前にitems#updateを行いたいと思っています。
##わからないこと
saveItems() function(items#updateするajax function)のがすべて完了したあとに、items#newのformをsubmit()までの処理をjavascriptで行う方法。
できれば具体的なコードをお見せいただけるととてもありがたいですが、もしちょっとしたアドバイスでもいただければ、幸いです。
宜しくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。