我正在使用与Railscast 213类似的代码来显示带有记录的日历。
do 行导致"获取错误的参数数(1 表示 0):
<%= calendar @date do |date| %>
<%= date.day %>
<% if @wolabors_by_date[date] %>
<ul>
<% @wolabors_by_date[date].each do |wolabor| %>
<li><%= link_to wolabor.name, wolabor %></li>
<% end %>
</ul>
<% end %>
<% end %>
calendar_helper.rb 的开头为:
module CalendarHelper
def calendar(date = Date.today, &block)
Calendar.new(self, date, block).table
end
wolabors_controller.rb 有
class WolaborsController < ApplicationController
def index
@wolabors = Wolabor.all
@wolabors_by_date = @wolabors.group_by(&:date)
@date = params[:date] ? Date.parse(params[:date]) : Date.today
end`
我认为第一行应该是
<% calendar_for @date do |date| %>
该 railscast 已经过修改,并且在新版本中没有使用该table_builder插件。
http://railscasts.com/episodes/213-calendars-revised
我在关于这个 Railscast 的讨论中发现,声明:
first = date.beginning_of_month.beginning_of_week(START_DAY)
给出相同的参数错误。似乎方法
beginning_of_month
和
beginning_of_week
是特定于 Rails 3.2 的,如果您使用的是较低版本,则应升级。