我现在正在绘制当前月份的日历,现在我想添加上个月和下个月,这就是我在视图中制作日历的方式
<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
我知道有很多额外的东西,我不需要我正在使用其中的一些,以确保我得到正确的信息。我需要的是点击下一个并获取上个月的下个月和之前的月份。我现在需要的只是获得控制器的命令我可以担心年份+和年份 - 在我开始工作后,任何帮助都会有用!
答案 0 :(得分:1)
如果你想使用任何Javascript库,你可以使用Ajax。在您的视图中有两个链接,并将click事件的功能附加到这两个链接。例如,
<a href="javascript:void(0);" class="left" id="prev"> </a>
<a href="javascript:void(0);" class="right" id="next"> </a>
如果您正在使用Prototype JS for 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' });
...
});
});
在我们正在构建的网址中,d
可以是我们要传递以获取任务的日期。您可以在控制器中执行fetch
操作来提供此请求。将其添加到工作路线。
希望这有帮助。