如何从日期范围中删除天数?

时间:2013-10-18 16:50:31

标签: ruby-on-rails ruby date

我正在使用Rails 3中的日历应用程序。我正在从用户收集'到'和'从'日期并创建日期,并根据该范围创建事件。这是代码:

date_range = (params[:from_date]..params[:to_date]).to_a
date_range.each do |r|
  params[:orientation][:class_date] = r
  @orientation = Orientation.new(params[:orientation])
  @orientation.save
end

这就像一个魅力。现在,我想在星期一到星期五的视图中添加复选框,以便用户可以指定要为其创建重复事件的日期。我的想法是扩展上面的逻辑并使用'to'和'from'日期创建日期范围,然后根据用户检查的复选框(天)删除日期。如果用户选中“周一”,“周三”,“周五”,我会创建我的日期范围,然后从该范围中删除所有周四和周五日期。任何人都可以在Ruby中建议任何方法来处理这个问题吗?

1 个答案:

答案 0 :(得分:2)

您可以在表单中添加复选框以忽略所选日期,然后忽略循环中的每一天:

# view
<% Date::DAYNAMES.each_with_index do |day_name, wday| %>
  <%= check_box_tag "ignored_days[]", wday %>
  <%= day_name %>
<% end %>

# controller
date_range.each do |r|
  next if params[:ignored_days].include? r.wday.to_s #added edit here
  params[:orientation][:class_date] = r
  @orientation = Orientation.new(params[:orientation])
  @orientation.save
end

希望这有帮助!