2015-12-20 109 views
0

我希望能夠在日曆上打印學生作業。我也跟着上的日曆正是railscasts視頻(修訂一個),但我得到這個錯誤:Railscasts Calendar - 「undefined method beginning_of_month」,Rails 4

未定義的方法`beginning_of_month」的零:NilClass

代碼:

homeworks_controller.rb

... def calendar 
      @homeworks = Homework.all 
      @homeworks_by_date = @homeworks.group_by(&:date) 
     end... 

calendar.html.erb

<%= calendar @date do |date| %> 
<%= date.day %> 
<% if @homeworks_by_date[date] %> 
<ul> 
    <% @homeworks_by_date[date].each do |homework| %> 
    <li><%= link_to homework.subject, homework %></li> 
    <% end %> 
</ul> 
    <% end %> 
<% end %> 

calenda r_helper.rb

​​

homeworks表中的日期列是一個字符串 - 這是問題嗎?在日曆視圖的第一行放入@date之前,它顯示日曆表,但不會打印鏈接到日曆上的記錄。在我放入@date後,我得到了上述錯誤。我正在使用Rails 4,而且教程可能會有點過時。

還有什麼我需要在這裏做的,我俯瞰?謝謝。

UPDATE:

我可以在控制器中定義@date後,現在看日曆,但它仍然不會打印日曆上的鏈接。

def calendar 
     @homeworks = Homework.all 
     @homeworks_by_date = @homeworks.group_by(&:date) 
     @date = params[:date] ? Date.parse(params[:date]) : Date.today 
    end 
+0

您沒有指派任何東西到你的'@ date'變量在控制器。 – BroiSatse

+0

我需要做什麼?有點卡住了。日曆工作 - 它只是不會打印鏈接。謝謝。 – Co2

回答

0

你可能正確的問題是日期列是一個字符串,而不是日期時間。

beginning_of_month是一個Rails幫手,但僅在DateTime上可用。

因此,無論是將列轉換爲日期時間,還是使用strptimeString轉換爲DateTime。 。

DateTime.strptime(date, format_string)

其中format_string是指示日期是什麼格式字符串這是我最喜歡的strftime/strptime參考:http://strftime.net/

+0

謝謝,我將該列更改爲datetime,但仍然無效。鏈接不會顯示在日曆上。 – Co2

+0

好的,謝謝,兩者 - 我都是部分正確的。我改變了日期,現在它工作!感謝:D – Co2

相關問題