form_for с вложенными ресурсами
У меня есть вопрос из двух частей о 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 %>
Это выдает ошибку «Called id for nil, что по ошибке и т. Д.» Я также пытался
<% form_for @article, @comment do |f| %>
Правильно отображает, но связывает f.text_area с полем text статьи вместо комментария и представляет html для атрибута article.text в этой текстовой области. Так что, похоже, я тоже ошибаюсь. То, что мне нужно, это форма, чья 'submit' будет вызывать действие create в CommentsController, с article_id в params, например, запросом на публикацию в / article / 1 / comments.
Вторая часть моего вопроса: как лучше всего начать создавать экземпляр комментария? Я создаю @comment в действии show ArticlesController, поэтому объект комментария будет находиться в области видимости для помощника form_for. Затем в действии create для CommentsController я создаю новый @comment, используя параметры, переданные из form_for.
Спасибо!