2011-05-01 74 views
0

我正在爲我的應用程序開發一個留言板,並且它具有使所有工作都正常工作的典型三種資源:論壇,主題和帖子。該路線被定義爲這樣:使用多個資源創建留言板時遇到問題

resources :forums do 
    resources :topics do 
     resources :posts 
    end 
end 

主題已定義爲嵌套資源職位,因爲當你創建一個新的話題,將創建一個新的崗位,開始線頭脫落。這樣一切運作良好。但是我被困在主題的'顯示'頁面上。在該頁面上,與任何留言板模型一樣,在顯示所有帖子後,底部會有一個表單添加新帖子/回覆。一旦帖子的創建動作被觸發,它將重定向回主題等。實現該形式是我絆倒了。

通常我會覺得這樣的事情...

<%= form_for([@topic, @post]) do |f| %> 
    ... 
<% end %> 

...只有頁面返回「未定義的方法`topic_posts_path」錯誤。這並不奇怪,因爲查看rake路由會將此作爲Posts的創建操作返回。

forum_topic_posts POST /forums/:forum_id/topics/:topic_id/posts(.:format)  {:controller=>"posts", :action=>"create"} 

想我會嘗試<%=的form_for([@論壇,@topic,@post])做| F | %>在form_for中,但只是給我返回了同樣的錯誤。我需要給它實際的路徑,我給了<%= form_for:url => forum_topic_posts_url do | f | %>一個嘗試,但它並不關心這一點。

谷歌搜索後,大多數論壇教程已過時或停止在主題頁面添加新帖子表單,只顯示我已經制定的幾乎所有的東西。

我能夠出現的唯一的其他事情表明不會將資源嵌套到三層或更多層,但是沒有達到「爲什麼」,更不用說提供一個合適的替代方案。此外,上面的路徑路徑似乎是這種行爲最合乎邏輯的路徑。

那麼我該如何完成在這種設置中的主題顯示頁面上使Post表單工作?

回答

0

當您嘗試「form_for([@ forum,@topic,@post])」時,您已在控制器中設置了@forum變量?

+0

(facepalm)哦,男人,我不能相信我忽略了這一點。你是對的。非常感謝。 – Shannon 2011-05-01 18:15:42