Rails 3 Нужна помощь с календарем на следующий и последний месяц - PullRequest
1 голос
/ 14 февраля 2011

У меня есть календарь на текущий месяц, теперь я хочу добавить предыдущий месяц и следующий месяц, вот как я делаю календарь в представлении

<table border="1" width="70%">
  <th colspan=7 align=center><%= @month %> <%= @year %></th>
  <tr width ="10%">
    <% Date::DAYNAMES.each do |days_of_week| %>
      <td align=center><%= days_of_week %></td>
    <% end %>
  </tr>


    <% @tasks.in_groups_of(7, ' ') do |row_tasks| %>
      <tr>
        <% for task in row_tasks %>
          <!-- if Staament here -->
          <td><%= task %></td>
          <!-- Else Staament here -->
        <% end %>
      </tr>
    <% end %> 

  </tr>
</table>

это контроллер

def calendar_of_events    
    @year = Date.today.year
    month = Date.today.month    
    @month = Date::MONTHNAMES[month]
    begin_day = Date.today.beginning_of_month
    @begin = begin_day
    @last = Date.civil(@year, month, -1)
    @blank_day= Date.today.beginning_of_month.wday
    if @blank_day >= 0
      @day = @blank_day - 1
    else
      @day = 0
    end
    @last_day_of_month = @last.mday
    @first_day_of_month = @begin.mday
    @blank_days_of_month = ('').to_a 
    for i in 0..@day    
      @blank_days_of_month2 = (' ').to_a
      @blank_days_of_month1 = @blank_days_of_month
      @blank_days_of_month = @blank_days_of_month2 + @blank_days_of_month1
    end 
    @days_of_month = (@first_day_of_month..@last_day_of_month).to_a
    @tasks = @blank_days_of_month + @days_of_month     
  end

Я знаю, что есть много дополнительных вещей, которые мне не нужны, я использовал некоторые из них, чтобы убедиться, что получаю правильную информацию. Что мне нужно, это нажать следующий и получить следующий месяц и предыдущий за последний месяц. Все, что мне сейчас нужно, это передача команды контроллеру, о которой я могу беспокоиться год + и год - после того, как я получу эту работу, любая помощь будет полезна!

1 Ответ

1 голос
/ 14 февраля 2011

Вы можете сделать это с помощью Ajax, если вы хотите использовать какую-либо библиотеку Javascript.Имейте две ссылки в своем представлении и прикрепите функцию к событию click к этим двум.Например,

<a href="javascript:void(0);" class="left" id="prev"> </a>
<a href="javascript:void(0);" class="right" id="next"> </a>

Если вы используете Prototype JS для библиотеки Javascript:

document.observe("dom:loaded", function() {  
    $('prev').observe('click', function(event){
        url = '/fetch?m=prev&d=' + d 
        new Ajax.Request(url, { method: 'get' });
        ...
    });

    $('next').observe('click', function(event){
        url = '/fetch?m=next&d=' + d;
        new Ajax.Request(url, { method: 'get' });
        ...
    });
});

В URL, который мы создаем, d может быть датой, которую мы хотим передатьполучить задачи для.У вас может быть действие fetch в вашем контроллере для обслуживания этого запроса.Добавьте это в маршруты к работе.

Надеюсь, это поможет.

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