具有嵌套資源的form_for我有一個關于form_for和嵌套資源的兩部分問題。假設我正在編寫一個博客引擎,我想將評論與文章聯系起來。我已經定義了一個嵌套資源,如下所示:map.resources :articles do |articles|
articles.resources :commentsend評論表單位于文章的show.html.erb視圖中,位于文章本身下方,例如:<%= render :partial => "articles/article" %><% form_for([ :article, @comment]) do |f| %> <%= f.text_area :text %> <%= submit_tag "Submit" %><% end %>這給出了一個錯誤,“為nil調用id,這會錯誤等等”。我也試過了<% form_for @article, @comment do |f| %>哪個呈現正確但將f.text_area與文章的“文本”字段而不是注釋相關聯,并在該文本區域中顯示了article.text屬性的html。所以我似乎也有這個錯誤。我想要的是一個表單,其'submit'將在CommentsController上調用create action,在params中有一個article_id,例如對/ articles / 1 / comments的post請求。我的問題的第二部分是,開始創建評論實例的最佳方法是什么?我正在ArticlesController的show動作中創建一個@comment,因此一個注釋對象將在form_for幫助器的范圍內。然后在CommentsController的create動作中,我使用從form_for傳入的參數創建新的@comment。謝謝!
3 回答

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
您不需要在表單中執行特殊操作。您只需在show動作中正確構建注釋:
class ArticlesController < ActionController::Base .... def show @article = Article.find(params[:id]) @new_comment = @article.comments.build end ....end
然后在文章視圖中為它創建一個表單:
<% form_for @new_comment do |f| %> <%= f.text_area :text %> <%= f.submit "Post Comment" %><% end %>
默認情況下,此注釋將轉到您可能想要放入的create
操作CommentsController
,redirect :back
因此您將被路由回Article
頁面。
- 3 回答
- 0 關注
- 574 瀏覽
添加回答
舉報
0/150
提交
取消