我的应用有几个项目/任务调度功能。我首先使用Ice_cube gem创建了一个简单的演示,它非常适合安排重复发生的事件......但是我担心每个星期几的范围/操作;所以,我创建了一个包含7个布尔复选框的计划表单。
请参阅此帖子以获取示例> weekday events。我无法得到推荐的解决方案,但我的要求略有不同。
相反,我编写了一些有效的代码 - 但它非常笨重/丑陋。我正在寻找有关如何编写允许我的方法的想法:为用户选择的日期范围分配每个工作日的日历日期。
索引视图:
<h1>Weekly Project Schedule</h1>
<br />
<h2>Monday: <%= Date.today.monday %></h2>
<% @tasks.each do |task| %>
<% if task.monday? %>
<h3><%= link_to task.name, task %></h3>
<p>Starts: <%= task.starts_on %></p>
<p>Ends: <%= task.ends_on %></p>
<p><%= link_to 'Edit', edit_task_path(task) %></p>
<% end %>
<% end %>
<h2>Tuesday: <%= Date.today.monday+1 %></h2>
<% @tasks.each do |task| %>
<% if task.tuesday? %>
<h3><%= link_to task.name, task %></h3>
<p>Starts: <%= task.starts_on %></p>
<p>Ends: <%= task.ends_on %></p>
<p><%= link_to 'Edit', edit_task_path(task) %></p>
<% end %>
<% end %>
<h2>Wednesday: <%= Date.today.monday+2 %></h2>
<% @tasks.each do |task| %>
<% if task.wednesday? %>
<h3><%= link_to task.name, task %></h3>
<p>Starts: <%= task.starts_on %></p>
<p>Ends: <%= task.ends_on %></p>
<p><%= link_to 'Edit', edit_task_path(task) %></p>
<% end %>
<% end %>
<h2>Thursday: <%= Date.today.monday+3 %></h2>
<% @tasks.each do |task| %>
<% if task.thursday? %>
<h3><%= link_to task.name, task %></h3>
<p>Starts: <%= task.starts_on %></p>
<p>Ends: <%= task.ends_on %></p>
<p><%= link_to 'Edit', edit_task_path(task) %></p>
<% end %>
<% end %>
Schema:
ActiveRecord::Schema.define(:version => 20120315004635) do
create_table "tasks", :force => true do |t|
t.string "name"
t.date "starts_on"
t.date "ends_on"
t.boolean "monday"
t.boolean "tuesday"
t.boolean "wednesday"
t.boolean "thursday"
t.boolean "friday"
t.boolean "saturday"
t.boolean "sunday"
t.boolean "completed"
t.datetime "created_at"
t.datetime "updated_at"
end
模型 - 没有添加代码。
任何帮助都非常感谢!
答案 0 :(得分:3)
你需要元编程
例如在视图中
<%- %w(sunday monday tuesday wednesday thursday friday saturday).each |day| %>
<h2><%= day.titleize %>: <%= Date.today.send(day) %></h2>
<% @tasks.each do |task| %>
<% if task.send("#{day}?") %>
<h3><%= link_to task.name, task %></h3>
<p>Starts: <%= task.starts_on %></p>
<p>Ends: <%= task.ends_on %></p>
<p><%= link_to 'Edit', edit_task_path(task) %></p>
<% end %>
<% end %>
<% end %>
等等