我构建了一个RoR应用程序,我希望允许用户删除多个项目,其中created_at字段与用户在删除表单的日期字段中设置的日期相匹配。这将是一个删除表单,其中包含1个日期字段和一个提交按钮。
我想首先我需要一个自定义路线,其中用户选择的created_at日期将作为参数出现。
然后我需要在items控制器中进行自定义操作以从路径获取created_at参数,使用它来获取属于用户的所有项目(这意味着用户ID也必须作为参数存在),并在created_at日期创建。然后使用循环删除它们。 这听起来相当简单,但我仍然想知道是否有一个“最好的实践”来实现这一点。就像如何以轨道方式正确设置路线一样?
答案 0 :(得分:2)
你的破坏行动中的一个简单的if语句可以解决这个问题:
# DELETE /items/1
# DELETE /items/1.json
def destroy
if params[:date]
Item.where(created_at: params[:date]).destroy_all
else
Item.where(id: params[:id]).destroy
end
respond_to do |format|
format.html { redirect_to items_url }
format.json { head :no_content }
end
end