0

これを実装するための最良の方法を探しています。現在、ユーザー用の「表示」ページがあります。これは、ユーザーのすべての写真を表示します。

def show
  @user = User.find(params[:id])
  @pictrues = @user.pictures
end

そのページには、さまざまなタブがあります。ユーザーがこれらのタブの1つをクリックすると、ajax呼び出しによってビューがレンダリングされます...特に、以前はすべてのユーザーの写真を表示していたパーシャル(および統計用の追加のパーシャル)が更新されます。「コメントを表示」の例では、ユーザーがコメントしたすべての写真でパーシャルを更新します。

def show_comments
  @user = User.find(params[:id])
  @pictures = @user.picture_comments.map{ |p| p.picture }.uniq
  respond_to do |format|
    format.html
    format.js
  end
end

show_comments.js.erbファイルは次のようになります。

$("#user_content_container").html("<%= escape_javascript render(partial: 'shared/pictures', pictures: @pictures) %>");
$("div.user_header").html("<h4>Comments</h4><br/>");
$("#stat_container").html("<%= escape_javascript render(partial: 'shared/comment_stats', pictures: @pictures) %>");

私がやりたいのは、ページの現在の機能を維持することです。ただし、ajaxを介してレンダリングされるビューに直接リンクすることもできます。たとえば、[コメント]タブをクリックしたときのように、ユーザーの[表示]ページに直接移動する別のページにリンクを設定します。

私にはいくつかのアイデアがありますが、これを行うための「最もクリーンな」方法が何であるかはわかりません。さらに説明が必要な場合はお知らせください。b/cこれを実装するための最良の方法を見つけているので、正直に言って、この質問を表現するのに苦労しています。

4

1 に答える 1

0

これは、ターボリンクを使用して解決できる可能性があるもののように聞こえます。Rails 4を使用するようにアプリを更新できる場合は、これがバンドルされています。それ以外の場合は、gemを使用できます。これを行う方法の詳細については、turbolinksのrailscastをご覧ください

それらを使用したくない、または使用できない場合は、URLでパラメーターを渡して、ページが読み込まれたときにそれらを確認することもできます。paramsを使用して、AJAX呼び出し後に変更されるのと同じ方法でページを変更できます。

于 2013-01-11T07:02:33.113 に答える