Ho una domanda in due parti su form_for e risorse nidificate. Diciamo che sto scrivendo un motore di blog e voglio mettere in relazione un commento con un articolo. Ho definito una risorsa nidificata come segue:
map.resources :articles do |articles|
articles.resources :comments
end
Il modulo di commento è nella vista show.html.erb per gli articoli, sotto l'articolo stesso, ad esempio in questo modo:
<%= render :partial => "articles/article" %>
<% form_for([ :article, @comment]) do |f| %>
<%= f.text_area :text %>
<%= submit_tag "Submit" %>
<% end %>
Questo dà un errore, "Chiamato id per zero, che erroneamente ecc." Ci ho anche provato
<% form_for @article, @comment do |f| %>
Il che viene visualizzato correttamente ma fa riferimento a f.text_area al campo "testo" dell'articolo anziché a quello del commento e presenta l'html per l'attributo article.text in quell'area di testo. Quindi mi sembra di avere anche questo errore. Quello che voglio è un modulo il cui 'submit' chiamerà l'azione di creazione su CommentsController, con un article_id nei parametri, ad esempio una richiesta di post a / articoli / 1 / commenti.
La seconda parte della mia domanda è: qual è il modo migliore per creare l'istanza di commento per cominciare? Sto creando un commento @ nell'azione show di ArticlesController, quindi un oggetto commento sarà nell'ambito dell'helper form_for. Quindi nell'azione di creazione di CommentsController, creo un nuovo @commento usando i parametri passati da form_for.
Grazie!