RailsはJavaScriptコードをどの程度正確にレンダリングし、それがブラウザによって実行されますか?このようなもののデータフローは何ですか。
1 に答える
Railsは、コントローラービューを実行するときに、ブラウザーへのコールバックとしてJavascriptコードをレンダリングします。AJAXと呼ばれるものを使用します。
これは、要素をクリックするか、AJAXを使用してブラウザから電話をかけると発生します。AJAXを使用すると、ページを更新せずにREMOTEブラウザー呼び出しを行うことができます。ページを更新しないため、現在表示しているページを更新する唯一の方法は、コントローラーにJavaScriptをブラウザーにレンダリングさせることです。ブラウザはこのJavaScriptを受け取り、コードのように実行します。javascriptは、ページに表示されている数値の更新から、ページからの削除、情報のDIV全体の追加まで、あらゆることを行うために使用できます。
たとえば、この例としては、Webページの削除ボタンをクリックして投稿を削除する場合があります。削除ボタンはサーバーにREMOTEメッセージを送信し、通常はRAILSプロジェクトのVIEWCONTROLLERのMETHODを呼び出します。私たちの場合、データベースから投稿を削除するようにサーバーに指示しただけです。これを実行すると、METHODは、リモートで何かを要求したため、JS応答をレンダリングすることを選択したことを確認します。
def destroy
@note = Note.find(params[:id])
@note_id = @note.id
@note.destroy
respond_to do |format|
format.html do // This is Rendered if the Message to Delete was NOT sent remotely
flash[:success] = "Note Deleted Successfully"
redirect_to root_path
end
format.js // Since we did send it Remotely, it then renders our Javascript Response
end
end
javascriptの応答は、何かを削除する場合、削除するように指示しているものを保持しているDIVまたはページ要素を削除するようにブラウザーに指示するメッセージになります。
$('#note-<%= @note_id %>').hide('slow', function(){ $('#note-<%= @note_id %>').remove(); }); // Hides the Post and then Removes it in a Smooth slow animation
$('.alert').slideUp('slow', function(){ $('.alert').remove(); }); // Shows the Alert with the alert
ブラウザにコールバックをレンダリングしなかった場合、ページが更新されなかったため、手動でページを更新するまで投稿が削除されたことが表示されません。これにより、ページをより動的にし、帯域幅を節約できます。ページを更新する必要がないため、サーバーからすべてを再度プルダウンする必要がなくなり、よりシームレスなユーザーエクスペリエンスが可能になります。また、JQueryでアニメーションを使用するため、見た目も印象的です。
これは、Rails3とJQueryを非常によく似た方法で使用することを説明しているミニチュートリアルです。
http://blog.bernatfarrero.com/jquery-and-rails-3-mini-tutorial/