古いレールアプリを3.1にアップグレードします。このアプリはかなり機能していますが、更新する必要があるいくつかのAjax機能があります。 (違いがあれば私はjqueryとcoffeescriptを使用しています)Railsを3.1にアップグレード - ajaxの処理を「render:update」からrespond_toに変更する
既存のajax機能はすべて、render:updatesを使って書かれています。例:
render :update do |page|
page.remove "financial_tran_offset_#{params[:ftof_id]}"
page.replace_html 'details', :partial => 'details', :locals => {:obj => @fire}
end
私はこれを行う新しい方法がrespond_toを使用すると思いますか? jsを処理するためにブロックしますが、これらの異なるケースを処理する最良の方法についてはわかりません。
最初のケース(page.remove
)私はアセットパイプラインでは、/ app/assets/javascripts/javascript側(たとえばpage.remove)を処理する外部jsが必要ですが、パラメータをjsファイルに渡す方法が不明です。私はあなたが何かを行うことができます推測している:
respond_to do |format|
format.js {:render :js => {:ftof => params[:ftof_id]}
end
を私はあなたが、JSファイル内からこれを拾うことができるかわかりません。これはjsに情報を渡すこの正しい方法ですか?それとも、私が使用すべき別の方法がありますか?
第2の場合(page.replace_html
)、これは廃止されました(3.1から削除されました)(apidock)。私は再びアプリケーション/資産/ javascriptディレクトリ内のjsファイルを使用する必要がありますが、部分をレンダリングしてjsにこの情報を渡す方法についてはわからないと思います。この領域での任意のポインタのための
感謝=)
cool。とにかくcoffeescriptでこれを行うには、またはあなたはupdate.js.erbのまっすぐなjsに限られていますか? –
あなたが本当にCoffeeScriptを使いたいのであれば、可能かもしれませんが、動的なビューでは私が知ることができないほどまれです。 (私は個人的にストレートJSを好んでいます。)単純なjQueryワンライナーのCoffeeScriptはちょっと大げさです。 $( '#id')。append 'content''。$('#id ')。一組の括弧を保存することはオーバーヘッドに値するものではありません。 JQueryはコンパクトでシンプルです。それにこだわるかもしれない。 – Substantial
非常に詳細な答えをありがとう! –