【发布时间】:2012-03-08 05:30:44
【问题描述】:
情况:目前有一个在微博下分页的评论模型。我正在尝试让下一个按钮呈现属于 micropost 的 cmets。
问题:我不确定如何制定路线/行动以使这些 cmets 通过。
代码:我有一些代码我会在下面提供,如果有什么不对的地方请帮忙。
非常感谢所有帮助。
参考文献: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>
更新
用户模型
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 "/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
【问题讨论】:
-
你在用户控制器中做什么?您正在设置@comment 3 次...为什么/如何用户、cmets 和学校共享相同的 ID?我不明白你想要做什么......
-
@klump 我更新了控制器对不起,我想做的是让 Pagination JS 通过路由/操作将 cmets 渲染到用户显示页面上,但我不确定如何去做这个,很抱歉造成混乱
-
所以当用户点击带有“CommentPagin”的 div 时,你想显示 cmets 吗?一下子?
-
是用户 -> miniposts -> cmets?
-
你能发布你的 routes.rb 吗?
标签: javascript ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1