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