9

Rails 3 アプリケーションに ajax を実装するには、2 つの方法があります。

1-ファイルviewaction.jsまたはviewaction.js.coffee内でjqueryを使用して送信時にイベントをバインドし、返されたjsonを管理してDOM内のものを変更します。

2- Rails で remote=>true タグを使用し、viewaction.js.erb という名前のファイルをコーディングして、DOM で変更を行い、コントローラーにロードされたクラス変数を使用します。

  • Rails 3 で推奨されるアプローチは何ですか?
  • それを行うRailsの方法は何ですか?
  • ベストプラクティスは何ですか?
  • 代替案の 1 つが他の選択肢よりも優れている特定のシナリオは?
  • 大規模プロジェクトの推奨事項は何ですか?

ありがとう

4

1 に答える 1

9

Rails 3 より前:remote => trueのバージョンでは、追加すると form タグ内に一連のインライン JavaScript が生成されていましたが、Rails 3 UJS では、唯一の変更は HTML 5 カスタム属性の追加ですdata-remote=true。例えば:

<%= form_for(@post, :remote => true) do |f| %>  

発生します

<form accept-charset="UTF-8" action="/posts" class="new_post" data-remote="true" id="new_post" method="post">  

今のところ、これは rails3 のアプローチです。それを生成する js 関数は rails.js ファイルの下にあります。rails.jsファイルを開くと、いくつかのリモート ハンドラー定義が表示されます。1 つ目はリモート フォーム送信のケースを処理し、2 つ目はリモート リンクと入力フィールドを処理し、3 つ目はフォームのように動作する非リモート リンクを処理します。

コードを詳しく調べたところ、このファイルが実際に jQuery ajax 呼び出しを実行していることがわかりました。

ajax: function(options) {
      return $.ajax(options);
    },

そのため、使用と通常の jQuery ajax 呼び出しに違いはなく、 Rails は同じメソッドを呼び出すラッパーのように機能します。:remote => true

詳細はこちらこちらこちら

于 2012-05-29T19:45:16.593 に答える