1
def event_calendar_options
    { 
      :year => @year,
      :month => @month,
      :event_strips => @event_strips,
      :month_name_text => I18n.localize(@shown_month, :format => "%B %Y"),
      :previous_month_text => "<< " + month_link(@shown_month.prev_month),
      :next_month_text => month_link(@shown_month.next_month) + " >>"
    }
end

def event_calendar
  calendar event_calendar_options do |args|
    event = args[:event]
    %(<a href="/events/#{event.id}" title="#{h(event.name)}">#{h(event.name)}</a>)
  end
end

这里整个 event_calendar_options 都用 {} 括起来,所以它只是简单地返回哈希表吗?

其次,为什么event_calendar_options这个模块方法可以作为参数传递给calendar?

4

1 回答 1

1

假设它们是同一类的一部分(例如控制器或模型),event_calendar_options可以通过event_calendar. 这是课堂上的常见做法。即使它们不是,它们也可以被声明为公共的并且也可以被其他类调用(这不太常见)。

而且,是event_calendar_options的,返回哈希表。在 ruby​​ 中,除非提供语句,否则将返回最终语句return。在这种情况下,它将返回一个哈希表,该方法将对其进行迭代event_calendar

于 2013-03-29T02:03:55.810 回答