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