Итак, я работаю над проектом, в котором есть задачи, которые составляют охоту за мусором. Поэтому, когда пользователь нажимает на конкретную охоту, я хотел бы, чтобы файл show.html.erb
отображал охоту, а также задачи, связанные с этой охотой. У меня есть модели охоты и задач, связанные через HuntTask.rb
. Я создал HuntTask
модель, основанную на предложении здесь: Имеет и принадлежит ко многим ошибкам - * _development.hunts_tasks 'не существует: , но я все еще не могу заставить контроллер поиска сделать чувство.
def show
@hunt = Hunt.find(params[:id])
@title = @hunt.name
@tasks = @hunt.tasks.paginate(:page => params[:page])
end
Но затем выдает эту ошибку:
NameError in HuntsController#show
uninitialized constant Hunt::Hunttask
Вот как выглядят мои модели:
class Hunt < ActiveRecord::Base
has_many :hunttasks
has_many :tasks, :through => :hunttasks
end
class Task < ActiveRecord::Base
has_many :hunttasks
has_many :hunts, :through => :hunttasks
end
class HuntTask < ActiveRecord::Base
belongs_to :hunt, :class_name => "Hunt"
belongs_to :task, :class_name => "Task"
Я почти уверен, что ошибка имени говорит мне, что Rails не может найти таблицу с именем hunt
, что имеет смысл, потому что правильная таблица - "охотится". Но я не решаюсь изменить третью строка моего метода показа,
@tasks = @hunt.tasks.paginate(:page => params[:page])
потому что я хочу указать, что метод @tasks
должен выполнять все задачи, связанные с показом этой конкретной охоты, а не со всеми охотами. Полагаю, я просто не понимаю синтаксис, который я использую в @tasks
.
Когда я добавляю s
к (@tasks = @hunts.tasks.paginate(:page => params[:page]) )
, я получаю NilClass
ошибку.
NoMethodError in HuntsController#show
undefined method `tasks' for nil:NilClass
Но я не думаю, что задачи должны быть методом. Или это?
Какой-нибудь совет о том, что я должен делать?