我试图使用Object.find(params [])仅返回对象:stage_id = integer
这是我的控制器代码
def show
@lesson = Lesson.find(params[:id])
@stage1 = @lesson.units(params[:stage_id] == 1)
@stage2 = @lesson.units(params[:stage_id] == 2)
每节课都有很多单元,每个单元都有stage_id = 1或stage_id = 2,我希望@ stage1成为一个数组,其stageInid值为1,stage2也是如此。
如何正确使用params只返回具有指定表值的单位?
答案 0 :(得分:2)
def show
@lesson = Lesson.find(params[:id])
@stage1 = @lesson.units.first(:conditions => { :stage_id => 1 })
@stage2 = @lesson.units.first(:conditions => { :stage_id => 2 })
end
答案 1 :(得分:0)
参考find
@stage1 = Unit.find(:all, :conditions => ["stage_id=? AND lession_id=?" 1, params[:id]])
@stage2 = Unit.find(:all, :conditions => ["stage_id=? AND lession_id=?" 2, params[:id]])
答案 2 :(得分:0)
如果单位“总是”将使用阶段进行结构化,那么您可以做的一件事就是使用阶段模型。这样可以灵活地在未来添加更多阶段而不会破坏代码。假设这种关系如果正确建立并且数据良好,您可以执行以下操作。
控制器代码
@lesson = Lesson.find(params[:id])
查看代码(haml)
- for stage in @lesson.stages
= stage.name
- for unit in stage.units
= unit.name