Rails:如何操纵find(params [])

时间:2011-05-27 06:06:29

标签: ruby-on-rails params

我试图使用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只返回具有指定表值的单位?

3 个答案:

答案 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