更新未选中框的属性

时间:2017-08-05 20:17:03

标签: ruby-on-rails forms checkbox

我有一个带复选框的表单。用户(课堂教师)点击他想要被视为预测试的目标。

然后,控制器将每个检查记录的:pretest值设置为“1”。

控制器还需要确保任何未选中的框为每个未选中的记录将:pretest值设置为“0”。

到目前为止,我通过首先将EVERYTHING设置为零,然后更新选中的复选框来完成此操作。但我怀疑还有更多的方法可以做到这一点。

控制器:

SpriteKit

查看:

   def update_pretests
        @seminar = Seminar.find(params[:seminar_id])
        @seminar.objective_seminars.update_all(:pretest => 0)
        ObjectiveSeminar.where(:id => params[:pretest_on]).update_all(:pretest => 1)
    end

提前感谢您的任何见解!

1 个答案:

答案 0 :(得分:0)

通过我已经得到的回复,似乎没有更多的方法可以为我的特定设置做到这一点。但我至少采取了火枪骑兵的建议,即确保没有中间状态。现在我的控制器看起来像这样:

def update_pretests
        @seminar = Seminar.find(params[:seminar_id])
        @seminar.objective_seminars.where.not(:id => params[:pretest_on]).update_all(:pretest => 0)
        @seminar.objective_seminars.where(:id => params[:pretest_on]).update_all(:pretest => 1)
        redirect_to priorities_seminar_path(@seminar)
    end

如果有其他人对此问题有所了解,我仍然感兴趣。