form_for com recursos aninhados
Eu tenho uma pergunta em duas partes sobre form_for e recursos aninhados. Digamos que eu esteja escrevendo um mecanismo de blog e quero relacionar um comentário a um artigo. Eu defini um recurso aninhado da seguinte forma:
map.resources :articles do |articles|
articles.resources :comments
end
O formulário de comentários está na exibição show.html.erb para artigos, abaixo do próprio artigo, por exemplo, assim:
<%= render :partial => "articles/article" %>
<% form_for([ :article, @comment]) do |f| %>
<%= f.text_area :text %>
<%= submit_tag "Submit" %>
<% end %>
Isso dá um erro, "Chamado id para nil, que erroneamente etc." Eu também tentei
<% form_for @article, @comment do |f| %>
Que processa corretamente mas relaciona f.text_area ao campo 'text' do artigo em vez do comentário, e apresenta o html para o atributo article.text nessa área de texto. Então eu pareço ter errado também. O que eu quero é um formulário cujo 'submit' irá chamar a action create no CommentsController, com um article_id nos params, por exemplo um post request para / articles / 1 / comments.
A segunda parte da minha pergunta é: qual é a melhor maneira de começar a criar a instância do comentário? Estou criando um @comment na ação show do ArticlesController, portanto, um objeto de comentário estará no escopo do form_for helper. Então, na ação create do CommentsController, eu crio new @comment usando os parâmetros passados do form_for.
Obrigado!