1

我有一个正在使用 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

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

4

1 回答 1

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

希望这可以帮助!

于 2013-10-18T16:57:51.143 回答