如何理解这段代码?

时间:2013-03-29 01:58:46

标签: ruby-on-rails plugins calendar

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(模块方法)可以作为参数传递给日历?

1 个答案:

答案 0 :(得分:1)

假设它们属于同一个类(例如控制器或模型),event_calendar_options可以调用event_calendar。这是课堂上的常见做法。即使它们不是,它们也可以被宣布为公共的,也可以被其他类别调用(这种情况不太常见)。

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