Now loadingボタンを表示させたい
何秒かかかる若干重い処理をAjaxでする場合に、
反応が全くないのは不安になります。
バックグラウンド処理をしている間にNow Loading !
なアイコン
でもあるといい感じです。
まず、link_to_remoteでnowloadingコントローラを呼び出し、
そのrjsからshoriコントローラを呼び出すこととします。
最初にリンクボタンと処理結果を用意します。
まず、処理ボタンと結果を入れる部分を用意します。
<%=link_to_remote "重い処理",:url=>{:action=>"nowloading"}%> <div id="result"></div>
nowloadingコントローラの中は空です。
def load_generate_all_ajax end
nowloading.rjsはnowloading.gifボタンを表示し、
実際の処理部分のコントローラを呼びます。
page.replace_html(:result,image_tag("nowloading.gif")) page<< "function call_shori(){ new Ajax.Request('/tekitou/shori', {asynchronous:true, evalScripts:true}); return false; }" page.call("call_shori")
shoriコントローラは実際の処理をします。
def shori # 処理いろいろで表示用の結果を@strに入れる @str=result end
shori.rjsは結果を表示する
page.replace_html(:result,"<textarea rows='20' cols='50'>#{@str}</textarea>")
こうするとぐるぐる回ってから処理が終わってから
結果が表示されて、超かっこいいです。
私の場合、結果が長いのでtextareaで囲いました。