2013-04-25 48 views
0

我正在創建一個應用程序,允許用戶對創建的項目發佈發表評論。我跟着這個Railscast來建立多態關聯。多態協會 - 如何創建主索引頁面

基於本教程,控制器中的索引頁面將按照下面的詳細說明進行設置,將您帶到localhost:3000/projects/1/comments。

問:我如何路線,並在控制器調節清晰度指數,這樣我可以代替路徑標識爲localhost:3000 /評論,因爲我想創建一個列出所有評論的觀點,無論哪一個項目是發表於?因爲現在的基礎上,路線和下面的代碼,當我去到本地主機:3000 /評論,我得到以下錯誤:

ActiveRecord::RecordNotFound in CommentsController#index 
Couldn't find Comment without an ID 
app/controllers/comments_controller.rb:32:in `load_commentable' 

/app/controllers/comments_controller.rb

class CommentsController < ApplicationController 

before_filter :load_commentable 
    def index 
     @comments = @commentable.comments 
    end 

private 
    def load_commentable 
     resource, id = request.path.split('/')[1,2] 
     @commentable = resource.singularize.classify.constantize.find(id) 
    end 
end 

的routes.rb

resources :projects do 
    resources :comments 
end 

resources :comments 
+0

而您的評論模型包括這一行:'belongs_to的:commentable ,polymorphic:true',以及你的其他協會? (您可能希望在答案中包含這些內容。) – aceofbassgreg 2013-04-25 01:13:36

+0

是的,它包含該行。它會影響我們如何創建一個通用索引頁面? – spl 2013-04-25 01:26:34

+0

我的想法是,如果協會的設置不正確,您將無法致電commentable.comments。 – aceofbassgreg 2013-04-25 01:27:54

回答

0

爲了解決這個問題,我創建了一個新的控制器頁面:

route.rb

match 'comments' => 'comments#admin' 

comments_controller.rb

def admin 
    @newcomments = Newcomment.newest.page(params[:page]).per_page(10) 
end 
0

設置你的routes.rb文件是這樣的:

resources :projects do 
    resources :comments 
end 

resources :comments 
+0

是的,我已經建立了,並沒有工作。我在上面的問題中添加了更多細節。 – spl 2013-04-25 01:07:35

+0

你的路線說照片而不是項目,這是正確的嗎? – Tomanow 2013-04-25 01:09:59

+0

我的錯誤,我複製並粘貼錯誤的,但是,我的路線目前說項目。我的猜測是我需要在我的控制器中進行調整,但我不知道該怎麼做? – spl 2013-04-25 01:24:41

0

如果您正在將index操作路由到localhost:3000/comments,聽起來您正在使用命名路由(即, '評論'而不是'索引')。如果您使用的是命名路線,您是否在routes.rb文件中指定了要控制的操作?例如,您應該有:

match 'comments' => 'comments#index' 

並且您的視圖文件應該標題爲index.html.erb

另外,如果你嵌套你的意見的資源,你仍然需要聲明

resources :comments, only: :index      # not nested 

爲了您的上班路線。

+0

我沒有那個實例。我嘗試添加該實例並在我的視圖/ comments/comments.html.erb中創建了一個文件,但是我的localhost:3000/comments現在說ActiveRecord :: RecordNotFound找不到註釋,沒有ID – spl 2013-04-25 01:47:17

+0

對不起,我只是重新訪問了一些應用程序I與你的類似,我的文件名不正確(index.html.erb)。鑑於此,我修改了帖子。 – aceofbassgreg 2013-04-25 01:55:23

+0

哦,我已經有一個index.html.erb文件。如上所述,索引頁目前通過localhost:3000/projects /#/ comments,而不是localhost:3000/comments,這正是我期望做到的。 – spl 2013-04-25 02:16:09