1

Rails の application.js ファイルに次のコードを実装します。ユーザーがリンクをクリックすると、ビューがリロードされ、最初の 4 人の代わりにレビュー担当者の完全なリストが表示されます。

$(document).ready(function(){
    $("#more_reviewers").click(function(e){
        $("#reviewer_list").html('<%= escape_javascript(render "restaurants/restaurant_reviewer_list", :venue => @restaurant, :limit => @restaurant.reviews.count) %>');
    });
});

問題: リストを表示する代わりに、コードは Rails コードをテキストとして返します。そのため、私の画面には、ユーザーのリストが表示される代わりに、次のように表示されます。

'<%= escape_javascript(render "restaurants/restaurant_reviewer_list", :venue => @restaurant, :limit => @restaurant.reviews.count) %>'

これはおそらく単純なものになるでしょう - そして私はそれを感謝します.

4

2 に答える 2

6

Railsはサーバー側のプログラミング言語です。Javascriptはクライアント側です。最初にサーバーで実行する必要があるため、RubyコードをWebサイトのクライアント側に動的に配置することはできません。

この行を実行するrailsスクリプトを作成する必要があります

<%= escape_javascript(render "restaurants/restaurant_reviewer_list", :venue => @restaurant, :limit => @restaurant.reviews.count) %>

load()次に、例を使用して要素にロードします。

$(document).ready(function(){
    $("#more_reviewers").click(function(e){
        $("#reviewer_list").load('http://url.to/the/script/you/made');
    });
});

このようにして、サーバーはスクリプトのリクエストを送信され、スクリプト(サーバー側)を実行し、出力(html)をjavascript(クライアント側)に配信してレンダリングできるようにします。

于 2013-03-21T08:57:45.077 に答える
2

クライアント側とサーバー側に関するトーマスの説明に加えて、サーバーに別のリクエストを行う必要がないことを前提としています。最も簡単なのは、パーシャルをビューの非表示の div に配置し、jQuery を使用して表示します。

show.html.erb:

<div style="display:none;" id="hidden_div">
  <%= render "restaurants/restaurant_reviewer_list", :venue => @restaurant, :limit => @restaurant.reviews.count %>
</div>

アプリケーション.js:

$(document).ready(function(){
  $("#more_reviewers").click(function(e){
    $("#hidden_div").show();
  });
});
于 2013-03-21T09:03:03.323 に答える