0

我正在尝试使用table_builder将日历添加到我的 rails 应用程序。我的实现基于他们的自述文件和强烈推荐的教程

在初始加载时,日历运行良好。每个作业都显示在正确的日期。但是,当通过单击月份名称周围的“>”或“<”来更改月份时,虽然标题中的月份名称发生了变化,但日历本身并没有改变。这是我认为呈现日历的代码块:

  <div id="calendar">  
  <h2 id="month">  
    <%= link_to "<", :month => (@date.beginning_of_month-1).strftime("%Y-%m-01") %>  
    <%= h @date.strftime("%B %Y") %>  
    <%= link_to ">", :month => (@date.end_of_month+1).strftime("%Y-%m-01") %>  
  </h2>   
    <%= calendar_for(@assignments) do |calendar| %>
        <%= calendar.head('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday') %>
        <% calendar.day(:day_method => :due_date) do |day, assignments| %>
            <%= day.day %>
            <ul>
                <% for assignment in assignments %>
                    <li>
                        <%= assignment.course.name %>: <%= link_to assignment.name, assignment_type_assignment_path(assignment.assignment_type, assignment)%>
                    </li>
                <% end %>
            </ul>
        <% end %>
    <% end %>
</div>  

@assignments 返回与给定用户关联的所有分配的完整列表。每个作业都作为属性到期日期,这是我们希望作业出现在日历中的日期。

这是控制器代码:

class HomeController < ApplicationController
    def index
        @user = @current_user
        @assignments = @user.assignments
        @date = params[:month] ? Date.parse(params[:month]) : Date.today
    end
end

谢谢

4

1 回答 1

1

您没有将当前传递@datecalendar_for助手,因此它只是默认呈现当前(或某个默认)月份。你需要@date像这样传入:

calendar_for(@assignments, :year => @date.year, :month => @date.month) do |calendar|
于 2012-10-18T18:20:45.430 回答