我有一個關於form_for和嵌套資源的兩部分問題。假設我正在編寫一個博客引擎,我想將評論與一篇文章聯繫起來。我如下界定的巢資源:form_for嵌套資源
map.resources :articles do |articles|
articles.resources :comments
end
評論表單是在文章show.html.erb觀點,文章本身的下方,比如像這樣:
<%= render :partial => "articles/article" %>
<% form_for([ :article, @comment]) do |f| %>
<%= f.text_area :text %>
<%= submit_tag "Submit" %>
<% end %>
這給出一個錯誤,「被調用的id爲零,這會錯誤地等。」我也試着
<% form_for @article, @comment do |f| %>
哪個正確呈現,但涉及f.text_area文章的「文本」字段,而不是評論的,並提出了在該文本區域article.text屬性的HTML。所以我似乎也有這個錯誤。我想要的是一個表單,其'submit'將在CommentsController上調用create操作,在params中帶有article_id,例如對/ articles/1/comments的發佈請求。
我的問題的第二部分是,創建評論實例的最佳方式是什麼?我在ArticlesController的show動作中創建了@comment,所以一個註釋對象將在form_for助手的範圍內。然後在CommentsController的創建動作中,我使用從form_for傳入的參數創建新的@comment。
謝謝!
這是工作,但我必須像jamuraa說的那樣修改控制器。 – 2014-05-17 15:26:27
果醬的方式很有效,但您最終可能會遇到您可能不知道的其他路線。最好是明確的。 – cdunn2001 2014-06-28 19:13:32
我嵌套了資源,@result在@course裏面。儘管'[@result,@ course]'有效,但'form_for(@result,url:{action:「create」})'也可以。這隻需要最後的型號名稱和方法名稱。 – Anwar 2015-09-04 05:57:54