2016-08-22 207 views
1

我對rails中的關聯有個疑問。 我正在嘗試爲有主題的帖子創建評論。 所以我擊潰文件看起來像這樣:Ruby on Rails中的關聯4

resources :subjects do 
    resources :post do 
    resources :comments 
    end 
end 

現在我想在後的show.html.erb文件中創建一個表單,以便有人能創建一個註釋。 我已經試過這種方式,我在軌導發現:

'的帖子/ show.html.erb'

<%= form_for {[@post, @post.comments.build]} do |f| %> 
//fill in form 
<% end %> 

'posts.controller.rb'

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

但是這給了我一個錯誤。如果您需要任何其他代碼部件,請隨時詢問。

錯誤消息

ActionView::Template::Error (undefined method `post_comments_path' for #<#<Class:0x007f9a4429d5e8>:0x007f9a42c01fc8>): 
8: <strong>Text:</strong> 
9: <%= @post.text %> 
10: </p> 
11: <%= form_for ([@post, @post.comments.build]) do |f| %> 
12:  <p> 
13:  <%= f.label :text %><br> 
14:  <%= f.text_area :text %> 
+0

你能分享你的控制檯日誌有錯誤嗎? – Navin

+0

添加到我的問題 – bendajo

+0

在哪條線上得到此錯誤? – Navin

回答

2

這些路徑resources :subjects下分組的,所以你的路徑將是subjects_post_comments_path,或者如果你喜歡使用多態的路徑將是[@subjects, @post, @post.comments.build]

您可以運行rake routes | grep comments查看所有評論路徑的路徑。

+0

'resources:post'也應該是'resources:posts'或'resource:post'。 – meagar

+1

非常感謝,非常完美 – bendajo

+1

可能有用的建議:您可以始終使用'rake routes'來查看可用路線的列表。他們還顯示可用的路徑。在該列表中,文本的第一位(如果存在)將顯示路徑。一般情況下,如果你添加'_path'到最後,你會發現上面Jarred的回答中描述的相關路徑。 – jaydel