13

この単純な作業に 4 時間も費やしたなんて信じられませんが、やり遂げました。

Rails 2.3 では、ページの 1 つのセクションを次の単純なコードに置き換えることができました。

render :update do |page| page.replace_html "div_id", :partial => "new_content",... end

Rails 3 では、Ryan Bates がまったく新しい JavaScript 関数を作成し、Prototype (Rails のデフォルト) から jQuery に切り替え、そうでなければ人生を楽しんでいません。他のチュートは単純ではありません。

私は何が欠けていますか?最近はどのように交換し<div>ますか?

4

6 に答える 6

12

みんなありがとう。公式の答えは、そうです、チームは単純だと感じ、善の敵であると感じ、それをより複雑にしたようです。

最初の鍵は、メソッド CALLING ajax update 用に NAMED の .js.erb ファイルを作成することです。したがって、インデックス メソッドが更新を処理する場合は、生の JavaScript をindex.js.erb. これは、ビュー フォルダーに移動します。

次に、index.js.erb で機能するコードは次のとおりです。

m = $('list_users');    
m.innerHTML = "<%= escape_javascript(render :partial => "reload_users") %>";

次に、呼び出しを行うために、コントローラー メソッドの Respond_to ブロックを追加し、以下を追加します。

format.js

最後に、呼び出しビューには次のものがあります。

<%= link_to "Update User List", @reload_users_path, :remote => true %>

ちなみに、page.replaceプラグインをインストールすれば、おそらくすべての古いページを使用して動作します。プラグインのダウンロード ページは、Rails 3 の最後のリリースで問題が発生し、修正されていないことを示唆しています。また、色々なブロガーがあなたの家に来て、あなたが使えばバーチスイッチしてくれます。

于 2010-10-26T18:07:27.040 に答える
4

RJS全体が、JavaScriptをインライン化し、domを非常に目立たなくします。また、インラインjavascriptを回避することで、これらのファイルをブラウザーで圧縮およびキャッシュすることにより、javascriptを最適化する他の可能な方法を開くことができます。これが、RJSがRails 3の範囲外になっている理由です。jQueryまたはPrototypeを1日少し使ってみると、この種の小さなものに慣れることができ、長期的にはプロジェクトに役立ちます。

于 2010-10-25T16:28:27.703 に答える
1

そこにまだjQueryがありますか?いつでもプロトタイプよりもお勧めします...

まだそこにある場合は、Javascript で次を使用できます。

$.get("<%= url_for path/to/partial %>",
      function(response) {
        $("#div_id").html(response);
      });

これは、AJAX を介してパーシャルを取得し、id div_id の div にダンプするだけです。

お役に立てれば!

于 2010-10-25T15:51:44.703 に答える
0

私の知る限り、上記の回答と同じように、テンプレートで次のようなことができます。

<%= link_to "Update User List", @reload_users_path, :remote => true %>

そしてコントローラーで、これを行います:

respond_to do |format|
  format.js {
    render :text => "alert('reloaded')"
  }
end

このようにして、render :update が行っていたのとほぼ同じように、コントローラーにクライアント側 JS を「実行」させることができます。これは、Rails 2 で次のことを行うのと同じです。

render :update do |page|
   page << "alert('reloaded')"
end

このアプローチが推奨されない理由はありますか?

于 2013-04-03T06:29:47.767 に答える
0

そのパーシャルをロードするためにAJAX呼び出しを行う必要があるかどうかさえわかりません。js.erb ファイルでは、render(:partial => object_or_path) を呼び出すと、すべての html を含む文字列が返され、jQuery オブジェクトにラップして追加できると思います。例:

$('#div_id').html($('<%= render :partial => @object %>'))
于 2010-10-25T16:15:13.947 に答える
-2

これを試して:

page.call "$('#div_id').html", render(:partial => 'new_content')
于 2011-01-26T23:46:44.847 に答える