【问题标题】:Issue with Ajax AppendingAjax 附加问题
【发布时间】:2012-03-07 02:27:03
【问题描述】:

我有一个分页的评论模型,我希望 cmets 在单击下一个按钮时在同一页面上加载更多 cmets。我对如何去做这件事有一些想法,但任何人都可以建议如何去做。我已经有一些代码了。

对于评论部分而不是渲染,我认为它可能必须寻找微帖子及其 id 才能找到要附加的正确 cmets,但我不确定如何将这一切联系在一起。

分页 JS

$(function() {
  $("#CommentPagin a").live("click", function() {
    $.getScript(this.href);
    return false;
  });
});

显示 JS

$("#cc").append('<%= escape_javascript(render :partial => "users/comments" )%>');

评论区

<div id='comments'>
  <% comments = micropost.comments.paginate(:per_page => 5, :page => params[:page]) %>
  <div id="CommentPagin">
  <span class="CommentArrowIcon"></span>
  <%= will_paginate comments, :page_links => false , :class =>"pagination" %>
  </div>
<%= render 'users/comments' %>
</div>

评论渲染部分

<div id="cc">
<% comments = micropost.comments.paginate(:per_page => 5, :page => params[:page]) %>
<%= render comments %>
</div>

用户控制器

  def show
    @user = User.find(params[:id])
    @school = School.find(params[:id])
    @comment = Comment.find(params[:id])
    @micropost = Micropost.new
    @comment = Comment.new
    @comment = @micropost.comments.build(params[:comment])
    @microposts = @user.microposts.order('created_at DESC').paginate(:per_page => 10, :page => params[:page])
      respond_to do |format|
      format.html
      format.js
     end
  end

【问题讨论】:

    标签: javascript jquery ruby-on-rails ajax ruby-on-rails-3


    【解决方案1】:

    我对铁轨有点生疏,所以这是一个通用的答案。

    我将从仅将您的评论渲染部分呈现为 HTML

    的路由/操作加载下一个 n cmets

    只需将其想象为您从自己的 API 请求资产并使用它们来更新页面。

    分页JS

    /**
    * jQuery 1.7+
    * use .delegate() for older versions.
    **/
    $("#CommentPagin").on('click', 'a', function(e){
        // Get data from server - make sure url has params for per_page and page.
        $.get($(this).attr('href'), function(data){
            // refresh client with data
            $("#cc").append(data);
        });
    });
    

    【讨论】:

    • 有了这个我就不需要 show.js 了吗?另外,如果要问的不是太多,我将如何从路线/动作中加载它?
    • 不,只要请求在同一个域上就足够了。
    • 明白,至于我的第二个问题,我不确定如何开始使用我的路线/动作来呈现这个,您能帮我吗?
    • 我认为您可以向控制器添加自定义格式 (respond_to do |format|) 或参数,并使用它来有条件地仅渲染部分内容。抱歉,我不能在这里提供更多帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 2011-09-08
    相关资源
    最近更新 更多