2012-03-16 7 views
1

내 앱에는 여러 가지 프로젝트/작업 예약 기능이 있습니다. Ice_cube 젬을 사용한 간단한 데모를 만들었고 일정 반복 이벤트를 계획하는 데 효과적이었습니다 ...하지만 개별 요일 범위/동작을 수행하는 것이 걱정됩니다. 그래서, 나는 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 

모델 - 아니 추가 코드입니다.

도움을 주시면 큰 도움이됩니다.

답변

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

그래서

+0

+1 플러스 배열로 승 %를 이동, 전자 ... 상수로 모델의 평일에보기 예를 들어 메타 프로그래밍

필요 Modelname :: weekdays로 참조하십시오. –

+0

@Mik_Die, 빠른 응답을 주셔서 감사합니다. 예, 프로그래밍을 향상시켜야합니다. 여전히 초보자입니다. Date.today.send (day)에 오류가 있습니다 - "정의되지 않은 메소드'tuesday 'for Fri, 16 Mar 2012 : Date"... 여러 가지 방법을 시도했지만 행운이 없었습니다. 금주의 특정 날짜를 정의하는 루비 메소드가 있습니까 (예 : sunday = march 11)? – Jeff

+0

Rails에는'sunday'와'monday' 메소드 만 있기 때문입니다. Time 객체를 확장하고 다른 메소드를 추가 할 수 있지만 Ruby입니다 :) – MikDiet