2010-10-14 35 views
1

我想創建一個評論,可以評論其他評論,但都來自一個單一的職位。你如何製作一張多形表格?

對我來說,特別令人不安的是試圖弄清楚如何使它能夠在後期展示中實現,而不是它的編輯或新功能。這在建築上是合理的嗎?

這樣我可以通過Post.comments,或Comment.comments等或Comments.parent

我的模型訪問:

#comment.rb 

    belongs_to :post 
    belongs_to :parent, :class_name => 'Comment' 
    has_many :children, :class_name => 'Comment' 

    validates_presence_of :text 

#post.rb 

    has_many      :comments 
    accepts_nested_attributes_for :comments 

posts_controller

def show 
    @post = Post.find(params[:id]) 


    respond_to do |format| 
    format.html # show.html.erb 
    format.xml { render :xml => @post } 
    end 
end 

的routes.rb

resource :comments 

我做我的評語表有:text:post_id屬性。雖然我不認爲它需要:post_id

我的表格應該是什麼樣子,它應該在哪裏?

這裏是我的可怕的嘗試:

- form_for @post do |f| 
    - f.fields_for :comments do |c| 
     = f.label 'Comments' 
     = f.text_area :text 
     = f.submit 'Submit' 

但似乎不必要做到這一點。

回答

1

二要完成這個關鍵的部件是這樣的:

由於其在表演,我需要指定URL到這個帖子:

- form_for @post do |f| 
    - f.fields_for :comments, @comment, :url => edit_post_path(@post) do |c| 
    = c.label 'Comments' 
    = c.text_area :text 
    = c.submit 'Submit' 

但我很困惑,因爲那裏有沒有錯誤,沒有文本框!

那是因爲我的控制器沒有提到一個。所以我說這def show

@comment = Comment.new 

ただ,現在它工作。

全碼

控制器:

def show 
    @post = Post.find(params[:id]) 
    @comment = Comment.new 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @post } 
    end 
    end 
相關問題