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