【发布时间】:2012-03-31 19:15:24
【问题描述】:
所以我正在开展一个项目,其中有一些任务构成了寻宝游戏。因此,当用户单击特定搜寻时,我希望show.html.erb 文件显示搜寻以及与该搜寻相关的任务。我已经通过HuntTask.rb 连接了狩猎和任务模型。我根据此处的建议创建了 HuntTask 模型:Has and Belongs to Many error - *_development.hunts_tasks' doesn't exist:,但我仍然无法让搜寻控制器有意义。
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 的表,这是有道理的,因为正确的表是“hunts”。但我犹豫要更改第三个表我的显示方法的行,
@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
但我不认为任务应该是一种方法。还是这样?
对我应该做什么有什么建议吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 rails-activerecord