@10100

Как заставить форму видеть комментарии?

Не могу даже толком составить вопрос для поиска с google. Знаю что такая тема должна быть но не могу найти её что бы посмотреть.

Вообщем у меня есть: контроллер: Posts
Модели: Post, Comment

Модель Post связана связью один ко многим с моделью Comment

Пример:

class Post < ActiveRecord::Base

  has_many :comments

end


class Comment < ActiveRecord::Base

  belongs_to :post

end


Миграция выглядит следующим образом:

class CreateComments < ActiveRecord::Migration
  def change
    create_table :comments do |t|
      t.integer :user_id
      t.text    :text
      t.timestamps
    end
  end
end


У меня есть Вьюшка для контроллера Post, она называется show.html.erb В ней я без проблем вывожу названия статей например так:

<%= @post.name %>

Проблема в том что на этой же странице в самом низу я хочу добавить форму для создания комментария, но не как не могу этого добиться так как при попытке прописать нечто подобное:

<%= form_for @comments do |f| %>
<%= f.text_field :text %>
<% end %>

Страница show.html.erb выдаёт ошибку #=>

undefined method `model_name' for Comment::ActiveRecord_Relation:Class


Вроде как то можно заставить вьюшку одного контроллера видеть в себе значения другого контроллера. Вобщем подскажите пожалуйста как делать правильно или где я споткнулся.
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 1
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
Надеюсь что это поможет
Прочитайте подробнее тут
rusrails.ru/rails-form-helpers#sozdanie-slozhnyh-form
class Person < ActiveRecord::Base
  has_many :addresses
  accepts_nested_attributes_for :addresses
 
end
 
class Address < ActiveRecord::Base
  belongs_to :person
end

<%= form_for @person do |f| %>
  Addresses:
  <ul>
    <%= f.fields_for :addresses do |addresses_form| %>
      <li>
        <%= addresses_form.label :kind %>
        <%= addresses_form.text_field :kind %>
 
        <%= addresses_form.label :street %>
        <%= addresses_form.text_field :street %>
        ...
      </li>
    <% end %>
  </ul>
<% end %>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы