2015-09-21 58 views
0

有兩種模式:User,誰在評論(由Devise提供)和Audio,他們評論。每個audios#show頁面都應列出該音頻的所有評論,並且有一小部分提交另一個評論。如何設置acts_as_commentable表單的正確路由?

我製作的Audioacts_as_commentable。然後我確定Comment belongs_to :userUserhas_many :comments

對於路線,我有

resources :audios do 
    resources :comments 
end 

然後,在audios_controller,

def show 
    if user_signed_in? 
    @comment = @audio.comments.new 
    end 
end 

然後我寫了一個簡單form_for(@comment)形式有 '註釋' 字段和一個提交按鈕。而已。

加載該頁面時出現的錯誤是未定義的方法'comments_path'。我googled這個錯誤,閱讀StackOverflow響應,並嘗試代替form_for(@audio, @comment)。這得到錯誤**不能寫未知的屬性'html'。

我有點難住;我在記事本上勾畫出了模型和關係,但我沒有經驗,而且我並不完全理解的東西(如幕後的Devise)的使用會讓我陷入循環。如果有人能給我這些路線/形式的小費,我會喜歡它。

回答

0

嘗試

form_for [@audio, @comment] 

form_for @comment, url: audio_comment_path(@audio, @comment) 
1

在routes.rb中,你需要有這樣的:

# routes.rb 
resources :comments, :only => [:create, :destroy] 

:comments路線去獨自一人,從外面你正在嘗試的資源添加評論功能。

然後,如果你運行rake routes則回覆:

$ rake routes 
comments POST  /comments(.:format)  comments#create 
comment  DELETE /comments/:id(.:format)  comments#destroy 

這會給你的comments_path助手和comment_path(:id)助手來完成POST和DELETE請求。 http://twocentstudios.com/blog/2012/11/15/simple-ajax-comments-with-rails/

+0

這對我來說很好工作:

檢查本教程中,當我需要使用這個寶石對我幫助很大。謝謝! – aLostMonkey