好吧...我是rails新手,所以這可能是一個愚蠢的問題,但需要幫助。我剛剛觀看並實施了Ryan Bates關於建立博客的screencaset。你可以在這裏看到它http://media.rubyonrails.org/video/rails_blog_2.mov。這裏是瘦:將我的意見添加到索引視圖... Ruby on Rails
兩個表:職位和意見。一切都很好,包括通過AJAX添加評論。這個博客的默認開發爲您提供了index.html.erb視圖,您可以查看所有的職位
def index
@posts = Post.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
format.json { render :json => @posts }
format.atom
end
end
的意見只是通過show.html.erb網頁瀏覽,並通過這個代碼在顯示文件:
<%= render :partial => @post %>
<p>
<%= link_to 'Edit', edit_post_path(@post) %> |
<%= link_to 'Destroy', @post, :method => :delete, :confirm => "Are You Sure" %> |
<%= link_to 'See All Posts', posts_path %>
</p>
<h2>Comments</h2>
<div id="comments">
<%= render :partial => @post.comments %>
</div>
<% remote_form_for [@post, Comment.new] do |f| %>
<p>
<%= f.label :body, "New Comment" %><br/>
<%= f.text_area :body %>
</p>
<p><%= f.submit "Add Comment"%></p>
<% end %>
我所試圖做的是得到的評論功能similair表示在index.html.erb視圖(我將用JavaScript隱藏)存在。目前看起來就像這樣:
<h1>Listing posts</h1>
<%= render :partial => @posts %>
<%= link_to 'New post', new_post_path %>
我最初的想法只是把這個完全相同的代碼是在index.html.erb文件show.html.erb文件,但不起作用。我在這裏嘗試了一些東西,但我對Rails(或者編碼方面)還不夠熟悉,但尚未及時做到這一點。我有兩個主要的錯誤。要麼我傳遞了一個nil.comments錯誤或一個未定義的對象/方法(不記得)。
我的問題是我需要包括在post_controller,comments_controller和index.html.erb文件來完成此操作。爲了完整,我在下面的每個代碼中都包含了代碼。
POSTS_CONTROLLER
class PostsController < ApplicationController
before_filter :authenticate, :except => [:index, :show]
# GET /posts
# GET /posts.xml
def index
@posts = Post.all
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 # new.html.erb
format.xml { render :xml => @post }
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
COMMENTS_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
INDEX.HTML.ERB
<h1>Listing posts</h1>
<%= render :partial => @posts %>
<%= link_to 'New post', new_post_path %>
就這樣,我清楚你想要什麼 - 你想列出所有的博客文章和所有的帖子控制器的索引視圖上的評論? – 2009-11-17 06:24:24
是的。我其實從下面的條目中想到了如何做到這一點。我現在正在努力如何將創建註釋功能綁定到此索引視圖中,以便它可用於每個帖子。 – bgadoci 2009-11-17 06:51:46