Вы уверены, что Thread.new
создает экземпляр вашей модели? В Ruby есть библиотека потоков, которая также определяет класс Thread
- у вас может быть конфликт имен.
В комментарии создать действие, как мне
получить доступ к @comment я создал в
контроллер потока?
Технически, нет. Когда ваше представление публикуется в контроллере комментариев, необходимо создать новый объект, например, @comment = Comment.new(params[:comment]
. Или, если вы извлекаете данные из БД, @comment = Comment.find(params[:id]).
Обратите внимание, что build
не сохраняет объект.
EDIT
Чтобы получить поток в контроллере, у вас есть два варианта. Один из способов - передать его как часть опубликованной формы (обычно используя скрытое поле).
Лучший способ - использовать вложенные маршруты и позволить Rails сделать всю работу за вас. Если у вас есть маршрут как:
map.resources :spools do |spools|
spools.resources :comments
end
Затем в контроллере комментариев вы получите spool_id
в хэше params. Путь будет выглядеть так для существующих комментариев:
/spools/1/comments/2
и вот так для новых комментариев
/spools/1/comments/
Где params[:spool_id]
установлено на 1.