Tôi có một câu hỏi gồm hai phần về tài nguyên form_for và lồng nhau. Giả sử tôi đang viết một công cụ blog và tôi muốn liên kết một bình luận với một bài viết. Tôi đã xác định một tài nguyên lồng nhau như sau:
map.resources :articles do |articles|
articles.resources :comments
end
Biểu mẫu nhận xét nằm trong chế độ xem show.html.erb cho các bài viết, bên dưới chính bài viết, ví dụ như thế này:
<%= render :partial => "articles/article" %>
<% form_for([ :article, @comment]) do |f| %>
<%= f.text_area :text %>
<%= submit_tag "Submit" %>
<% end %>
Điều này đưa ra một lỗi, "Đã gọi id cho nil, sẽ nhầm, v.v." Tôi cũng đã thử
<% form_for @article, @comment do |f| %>
Điều này biểu hiện chính xác nhưng liên quan đến f.text_area với trường 'văn bản' của bài viết thay vì nhận xét và trình bày html cho thuộc tính article.text trong vùng văn bản đó. Vì vậy, tôi dường như cũng có sai này. Những gì tôi muốn là một hình thức mà 'gửi' sẽ gọi hành động tạo trên CommentsContoder, với một article_id trong các thông số, ví dụ như một yêu cầu bài đăng tới / article / 1 / bình luận.
Phần thứ hai cho câu hỏi của tôi là, cách tốt nhất để tạo ra ví dụ bình luận để bắt đầu là gì? Tôi đang tạo một @comment trong hành động hiển thị của ArticleContoder, vì vậy một đối tượng bình luận sẽ nằm trong phạm vi cho trình trợ giúp form_for. Sau đó, trong hành động tạo của CommentsContoder, tôi tạo @comment mới bằng cách sử dụng các tham số được truyền từ form_for.
Cảm ơn!