Ruby on rails Ruby on Rails:时区[]的参数无效:nil

Ruby on rails Ruby on Rails:时区[]的参数无效:nil,ruby-on-rails,ruby,ruby-on-rails-3,timezone,activesupport,Ruby On Rails,Ruby,Ruby On Rails 3,Timezone,Activesupport,注意:这是我的第一篇帖子,所以请客气一点。我是rails新手,所以很有可能我遗漏了一些简单的东西 我在本地使用Ruby on Rails应用程序,在尝试填写测试表单时遇到以下错误: invalid argument to TimeZone[]: nil 应用程序跟踪显示以下内容: app/models/venue.rb:117:in `timezone' app/controllers/events_controller.rb:80:in `block in create' venue.rb

注意:这是我的第一篇帖子,所以请客气一点。我是rails新手,所以很有可能我遗漏了一些简单的东西

我在本地使用Ruby on Rails应用程序,在尝试填写测试表单时遇到以下错误:

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

如果你能为这个问题提供更多的背景,这会有所帮助。我假设在没有设置时调用
set\u timezone\u name
来初始化
timezone\u name
值。在这种情况下,
set\u timezone\u name
可能无法设置值。您可以尝试提供回退以确保设置了值。例如:

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

timezone\u name
为空是
场馆
对象之一。时区名称的代码是什么?这是一个变量的方法?你好,拉杰什,谢谢你的回复。编辑我的原始帖子以回答您的问题哪个代码负责设置
时区\u name
?再次更新,谢谢!我很抱歉没有上下文。这对我来说是一次新的经历!您的假设是正确的,但是您提供的解决方案没有解决问题。