所以我工作的地方有构成寻宝任务的项目。因此,当用户点击某个特定的狩猎时,我希望show.html.erb
文件显示狩猎以及与该狩猎相关的任务。我有通过HuntTask.rb
连接的狩猎和任务模型。我创建了HuntTask
模型,基于这里的建议:Has and Belongs to Many error - *_development.hunts_tasks' doesn't exist:,但我仍然无法让寻线控制器合理。由于错误的语法NameError在控制器连接表
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"
我敢肯定的是,名称错误是告诉我,滑轨不能找到一个名为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
但我不认为任务应该是一种方法。或者是?
任何意见我应该做什么?
你说得对。我错过了下划线。引发错误的行是这一行:'@tasks = @ hunt.tasks.paginate(:page => params [:page])''。 – 2012-03-31 19:53:55