ฉันมีคำถามสองส่วนเกี่ยวกับ 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 กับฟิลด์ "text" ของบทความแทนที่จะเป็นความคิดเห็นและแสดง html สำหรับแอตทริบิวต์ article.text ในพื้นที่ข้อความนั้น ดูเหมือนว่าฉันจะมีความผิดนี้เช่นกัน สิ่งที่ฉันต้องการคือแบบฟอร์มที่ 'ส่ง' จะเรียกการดำเนินการสร้างบน CommentsController โดยมี article_id ในพารามิเตอร์ตัวอย่างเช่นคำขอโพสต์ไปยัง / บทความ / 1 / ความคิดเห็น
ส่วนที่สองสำหรับคำถามของฉันคือวิธีที่ดีที่สุดในการสร้างอินสแตนซ์ความคิดเห็นเริ่มต้นด้วยวิธีใด ฉันกำลังสร้าง @comment ในการดำเนินการแสดงของ ArticlesController ดังนั้นออบเจ็กต์ความคิดเห็นจะอยู่ในขอบเขตสำหรับ form_for helper จากนั้นในการดำเนินการสร้างของ CommentsController ฉันสร้าง @comment ใหม่โดยใช้พารามิเตอร์ที่ส่งผ่านจาก form_for
ขอบคุณ!