Ruby on Rails:TimeZone []的无效参数:nil

时间:2013-10-08 03:13:18

标签: ruby-on-rails ruby ruby-on-rails-3 timezone activesupport

注意:这是我的第一篇文章,所以请善待。我是一个新手,所以我很遗憾我错过了一些简单的东西。

我在本地使用Ruby on Rails应用程序,并在尝试填写测试表单时收到此ArgumentError:

invalid argument to TimeZone[]: nil

应用程序跟踪显示以下内容:

app/models/venue.rb:117:in `timezone'
app/controllers/events_controller.rb:80:in `block in create'

venue.rb中的第116-118行:

def timezone
 ActiveSupport::TimeZone.new(timezone_name)
end

events_controller.rb中的第78-87行:

["start", "end"].each do |t|
     month, day, year = params["event"]["#{ t }_date"].split("/")
     @event.send("#{ t }s_at=", @event.venue.timezone.local_to_utc(Time.utc(
        ("20" + year).to_i, 
        month.to_i, 
        day.to_i,
        military_hours(t),
        params["#{ t }_minute"].to_i,
        0
     )))

表单在实际站点上正常工作,因此我可能无法正确设置我的开发环境。谁能指出我正确的方向?

更新

  class Venue
      key :timezone_name, String

  def set_timezone_name
     tz = Timezone.contains(self)
     self.timezone_name = tz.name if tz
  end

1 个答案:

答案 0 :(得分:0)

如果您为此问题提供了更多上下文,那将会有所帮助。我假设在没有设置时调用set_timezone_name来初始化timezone_name值。在这种情况下,set_timezone_name可能无法设置值。您可以尝试提供后备以确保设置值。例如:

def set_timezone_name
  tz = Timezone.contains(self)
  self.timezone_name = tz.try(:name) || “Eastern Time (US & Canada)”
end