Rails - еженедельное расписание с дневными флажками - PullRequest
1 голос
/ 16 марта 2012

Мое приложение имеет несколько функций планирования проектов / задач.Сначала я создал простую демо-версию с гемом Ice_cube, и он отлично работает для планирования повторяющихся событий ... но я беспокоюсь о том, чтобы делать отдельные области / действия на день недели;Итак, я создал форму расписания с 7 логическими флажками.

См. этот пост для примера> события дня недели .Я не мог получить решение, рекомендованное для работы, но мои требования немного отличаются.

Вместо этого я написал некоторый код, который работает - но он очень неуклюжий / уродливый.И я ищу идеи о том, как написать метод, который позволяет мне: назначать календарные даты для каждого дня недели для выбранного пользователем диапазона дат.

Индексный просмотр:

<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

Модель -без добавления кода.

Любая помощь с благодарностью!

1 Ответ

3 голосов
/ 16 марта 2012

Вам нужно метапрограммирование

Например, в поле зрения

<%- %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 %>

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...