1

情况:当前有一个评论模型,在微博下进行分页。我正在尝试使下一个按钮呈现属于微博的评论。渲染Ajax/Rails问题

问题:我不确定如何去制作路径/动作序通过把这些意见。

代码:我有一些代码,我会在下面提供,如果有什么不对,请协助。

所有的帮助都很赞赏。

参考Issue with Ajax Appending

用户控制器

def show 
    @user = User.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]) 
    end 

分页JS

$("#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); 
    }); 
}); 

注释部分

<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> 

UPDATE

用户模型

class User < ActiveRecord::Base 
    has_many :microposts 
    has_many :comments 
end 

型号微柱

class Micropost < ActiveRecord::Base 
    belongs_to :user 
    has_many :comments 
    accepts_nested_attributes_for :comments 
end 

评论模型

class Comment < ActiveRecord::Base 
    attr_accessible :content, :user_id, :micropost_id 
    belongs_to :micropost, :counter_cache => true 
    belongs_to :user 
    belongs_to :school 
end 

的routes.rb

kit::Application.routes.draw do 
    resources :pages 
    resources :application 
    resources :schools 
    resources :microposts 
    resources :comments 
    resources :users 
    resources :sessions 
    resources :password_resets 
    resources :relationships, only: [:create, :destroy] 
    resources :users do 
     member do 
     get :following, :followers 
     end 
    end 
    resources :microposts do 
    member do 
     post :vote_up, :unvote 
    end 
    end 
    resources :microposts do 
    member do 
     post :upview 
    end 
    end 
    resources :microposts do 
    resources :comments 
    end 
    resources :schools do 
    collection do 
     get :mostrecent 
     get :mostdiscussed 
     get :highestrated 
     get :viewcount 
    end 
    end 

    match "https://stackoverflow.com/users/:id/personalstream" => "users#personalstream" 
    match "/schools/:id/mostrecent" => "schools#mostrecent" 
    match "/schools/:id/mostdiscussed" => "schools#mostdiscussed" 
    match "/schools/:id/viewcount" => "schools#viewcount" 
    match "/schools/:id/highestrated" => "schools#highestrated" 
    match "/schools/:id", :to => 'schools#show', :as => "school" 
    match "/microposts/:id/comments" => "microposts#comments" 
    match "/microposts/:id/upview" => "microposts#upview" 
    match "/microposts/:id/vote_up" => "microposts#vote_up" 
    match "/microposts/:id/unvote" => "microposts#unvote" 
    get "log_out" => "sessions#destroy", :as => "log_out" 
    get "sign_in" => "sessions#new", :as => "sign_in" 
    get "sign_up" => "users#new", :as => "sign_up" 
    get "home" => "users#home", :as => "home" 

    root to: "schools#index" 

end 
+1

你在用户控制器中做什么?你正在设置@评论3次......为什么/用户,评论和学校如何共享相同的ID?我没有得到你想要做的... – klump 2012-03-07 19:02:30

+0

@klump我更新控制器抱歉,我想做的是让分页JS通过路由/动作渲染出用户显示页面上的评论,但我不确定如何去做这个,对不起 – Kellogs 2012-03-07 20:21:58

+1

所以当用户点击与它的“CommentPagin”div你想显示评论?一次全部? – klump 2012-03-07 20:27:47

回答

1

添加一个新的动作到微观柱控制器:

app/controllers/microposts_controller.rb 
def comments 
    @micropost = Micropost.find(params[:id]) 
    @comments = @micropost.comments 

    # we dont need all the html head stuff 
    render :layout => false 
end 

写在那里你显示所有你想要的

的@comments和新的成员添加到您微观柱一个视图(app /视图/微柱/ comments.html.erb)资源get :comments

现在你可以尝试在浏览器/ microposts /(在这里添加一个微博ID)/评论 这应该为用户提供所有的评论和格式,如你所愿。

最后一部分是最简单的:当用户点击div时,通过ajax向本网站发出请求并将答案附加到要显示评论的div。代码可能看起来像这样:

$("#CommentPagin").click(function(){ 
    $("#CommentPagin").load("<%= micropost_comments_path(@user) %>"); 
}); 

希望你有一个想法。如果它不起作用,请回报

+0

对不起,如果我困惑你,但我想获得所有的特定mircoposts评论,而不是所有的评论,用户发布。如果我可以发布该网站的图片,但像Facebook一样,发布帖子时会有一个评论部分,一旦它下面有几条评论,就会显示下一个按钮,显示该帖子的所有评论,怎么可以我为该微博提供其余的评论。对不起,我的答案更新了 – Kellogs 2012-03-07 21:00:42

+1

。希望我这次得到了正确的结果 – klump 2012-03-07 21:06:57

+0

我会试试这个,如果有任何问题,请告诉你,非常感谢你:),这个逻辑背后的逻辑是将一个微博在页面上的所有评论渲染出来,然后把这些评论和从该页面呈现的权利?差不多就是 – Kellogs 2012-03-07 21:08:11