2

RailsはJavaScriptコードをどの程度正確にレンダリングし、それがブラウザによって実行されますか?このようなもののデータフローは何ですか。

4

1 に答える 1

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/

于 2012-06-13T19:41:04.660 に答える