我是新來的rails,所以可以在這裏使用一些幫助。我遵循了幾個教程來創建一個帶有評論的博客,甚至還有一些AJAX的花裏胡哨的東西,我被困在一些我希望很容易的東西上。博客和評論的默認顯示是列出最早的第一個。如何反向顯示最新的條目和最新的評論。真的不知道這是否是控制器或模型的功能。我已經做了一些定製,所以這裏是控制器.rb文件的代碼,如果它有幫助。顯示博客條目和評論的反向順序,Ruby on Rails
評論CONTROLLER
class CommentsController < ApplicationController
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create!(params[:comment])
respond_to do |format|
format.html { redirect_to @post}
format.js
end
end
end
Posts控制器
class PostsController < ApplicationController
before_filter :authenticate, :except => [:index, :show]
# GET /posts
# GET /posts.xml
def index
@posts = Post.all(:include => :comments)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
format.json { render :json => @posts }
format.atom
end
end
# GET /posts/1
# GET /posts/1.xml
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @post }
end
end
# GET /posts/new
# GET /posts/new.xml
def new
@post = Post.new
respond_to do |format|
format.html { redirect_to @post}
format.js
end
end
# GET /posts/1/edit
def edit
@post = Post.find(params[:id])
end
# POST /posts
# POST /posts.xml
def create
@post = Post.new(params[:post])
respond_to do |format|
if @post.save
flash[:notice] = 'Post was successfully created.'
format.html { redirect_to(@post) }
format.xml { render :xml => @post, :status => :created, :location => @post }
else
format.html { render :action => "new" }
format.xml { render :xml => @post.errors, :status => :unprocessable_entity }
end
end
end
# PUT /posts/1
# PUT /posts/1.xml
def update
@post = Post.find(params[:id])
respond_to do |format|
if @post.update_attributes(params[:post])
flash[:notice] = 'Post was successfully updated.'
format.html { redirect_to(@post) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @post.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /posts/1
# DELETE /posts/1.xml
def destroy
@post = Post.find(params[:id])
@post.destroy
respond_to do |format|
format.html { redirect_to(posts_url) }
format.xml { head :ok }
end
end
private
def authenticate
authenticate_or_request_with_http_basic do |name, password|
name == "admin" && password == "secret"
end
end
end
這是一個非常有用的答案,它的工作。還有一個問題(對不起)。我有AJAX設置工作在show.html.erb。我無法讓它在頂部而不是底部添加新評論。我已經嘗試了幾件事情,但在這裏有任何快速的話? – bgadoci 2009-11-18 04:08:36
你是如何做AJAX的? RJS或???如果你仍然關注博客教程,你只是想在create.js.rjs的第一行上將底部改爲:頂部......如果你將JS切換到其他的東西,可能值得發佈一個新問題。 – 2009-11-18 04:54:05
這是第三個選項,它使用'Comment'模型本身內的'default_scope'方法。 'default_scope:order =>'created_at desc'' – 2009-11-18 09:46:01