0

寻找实现这一点的最佳方法。目前我有一个用户的“显示”页面 - 显示所有用户的图片。

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

在那个页面上,我有各种标签。当用户单击其中一个选项卡时,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

这听起来像是您可以使用turbolinks解决的问题。如果您可以更新您的应用程序以使用 Rails 4,您可以将其捆绑在其中。否则,您可以使用 gem。有关如何执行此操作的更多信息,请观看turbolinks 上的 railscast

如果您不想或不能使用它们,您也可以尝试在 url 中传递参数,并在页面加载时检查它们。您可以使用参数来修改页面,就像在 AJAX 调用之后修改页面一样。

于 2013-01-11T07:02:33.113 回答