2015-02-10 9 views
0

我想在我的rails應用程序中創建一個日曆,並將日曆日期鏈接到我的article_params以便查看特定日期的文章。Rails日曆 - 顯示7 <tds>每行

我最初嘗試datepicker,但是當我得知我無法將JavaScript值傳遞給控制器​​後,我決定創建自己的日曆。

<% @current_date = Date.new(@year, @month, Time.now.day) %> 
<% @start = @current_date.beginning_of_month.beginning_of_week %> 
<% @end = @current_date.end_of_month.end_of_week %> 
<table> 
    <thead> 
    <tr><%= @months[Time.now.month - 1] %></tr> 
    </thead> 
    <tbody> 
    <% (@[email protected]).each_slice(7) do |d| %> 
     <% d.each do |da| %> 
     <tr> 
      <td><%= da.day %></td> 
     </tr> 
     <% end %> 
    <% end %> 
    </tbody> 
</table> 

請允許我解釋我的代碼。

我首先創建了一個instance variable來存儲當前日期。由於星期幾開始和結束,我爲日曆月的開始和結束創建了兩個實例變量。

我的@months變量是一個實例變量,我添加到我的控制器。它存儲月份的名稱。

對於每個星期,我將範圍@[email protected]切成7個切片。對於7個日期的每個切片,我希望將該切片中的所有元素放在它們自己的表格行中。

電流輸出

29 
30 
31 
1 
2 
.. 
31 
1 

期望輸出

29 30 31 1 2 3 4 
5 6 7 8 9 10 11 
12 13 14 15 16 17 18 
19 20 21 22 23 24 25 
26 27 28 29 30 31 1 

幫助理解。

回答

1

問題是你正在聲明一個循環內的tablerow。這就是爲什麼結果全部顯示在每一行上的原因。

更改此

<% d.each do |da| %> 
    <tr> 
    <td><%= da.day %></td> 
    </tr> 
<% end %> 

對此

<tr> 
    <% d.each do |da| %> 
    <td><%= da.day %></td> 
    <% end %> 
</tr> 

現在,每片將有自己的行