Saya punya pertanyaan dua bagian tentang form_for dan sumber daya bersarang. Katakanlah saya sedang menulis mesin blog dan saya ingin menghubungkan komentar dengan sebuah artikel. Saya telah mendefinisikan sumber daya bersarang sebagai berikut:
map.resources :articles do |articles|
articles.resources :comments
end
Formulir komentar ada di tampilan show.html.erb untuk artikel, di bawah artikel itu sendiri, misalnya seperti ini:
<%= render :partial => "articles/article" %>
<% form_for([ :article, @comment]) do |f| %>
<%= f.text_area :text %>
<%= submit_tag "Submit" %>
<% end %>
Ini memberikan kesalahan, "Called id for nil, yang keliru dll." Saya juga sudah mencoba
<% form_for @article, @comment do |f| %>
Yang merender dengan benar tetapi menghubungkan f.text_area ke bidang 'teks' artikel, bukan komentar, dan menyajikan html untuk atribut article.text di area teks itu. Jadi sepertinya saya juga salah. Yang saya inginkan adalah formulir yang 'kirim' akan memanggil tindakan buat di CommentsController, dengan article_id di params, misalnya permintaan posting ke / artikel / 1 / komentar.
Bagian kedua dari pertanyaan saya adalah, bagaimana cara terbaik untuk membuat contoh komentar untuk memulai? Saya membuat @comment dalam aksi pertunjukan dari ArticleController, jadi objek komentar akan berada dalam ruang lingkup untuk form_for helper. Kemudian dalam tindakan create dari CommentsController, saya membuat @comment baru menggunakan params yang dilewatkan dari form_for.
Terima kasih!