Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 日期类型的列将不显示“日期”;未定义的方法`到格式化的';对于nil:NilClass“;在轨_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 日期类型的列将不显示“日期”;未定义的方法`到格式化的';对于nil:NilClass“;在轨

Ruby on rails 日期类型的列将不显示“日期”;未定义的方法`到格式化的';对于nil:NilClass“;在轨,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在显示一个名为Show的模型中的数据库数据,该模型具有以下列: id: integer, title: string, show_date: date, description: text, ticket_cost: string, location: string, created_at: datetime, updated_at: datetime 控制器通过以下方式访问每个Show实例: @shows = Show.all.order(:show_date) 该视图使用以下方式显示

我正在显示一个名为Show的模型中的数据库数据,该模型具有以下列:

id: integer, title: string, show_date: date, description: text, ticket_cost: string, location: string, created_at: datetime, updated_at: datetime
控制器通过以下方式访问每个Show实例:

@shows = Show.all.order(:show_date)
该视图使用以下方式显示信息:

<% @shows.each do |show| %>
    <h4><%= show.title %></h4>
    <h5><span class="glyphicon glyphicon-map-marker"></span><%= show.location %></h5>
    <h5><span class="glyphicon glyphicon-calendar"></span><%= show.show_date.to_formatted_s(:long_ordinal) %></h5>
    <h5><span class="glyphicon glyphicon-usd"></span><%= show.ticket_cost %></h5>
    <h5><%= show.description %></h5>
<% end %>

我猜有时候你的约会真的是零。。。这有时会发生在旧的测试数据挂起的情况下。您可以使用try来暂时解决此问题,例如:

show.show_date.try(:to_formatted_s, :long_ordinal)
这将帮助您停止看到此错误。。。也许还可以获得更多关于导致问题的数据的详细信息

我还建议添加一些日志语句,以便更好地查看数据(就在修复错误的时候)。。。例如:



查看您正在获取的所有数据,并可能发现错误的数据。

我尝试了try(:to_格式化,:long_序数)方法,在这种情况下,信息不会显示,但至少会加载视图,而不会抛出错误。我添加了一些调试语句,作为对原始帖子的编辑,但仍然卡住了。谢谢你的建议!对这就是try将要做的——它将允许bug在您调试时暂时停止发生——这样您就可以进行一些调试。肯定不会修复坏数据(如果这是问题的话):)好的,所以没有日期的是导致错误的原因,正如您在问题中所述。。。它将杀死整个页面。这就是为什么您需要
尝试
。然而,为了找出其他日期没有显示的原因。。。我们需要更多的信息。比如说,你的模特在展示日期上有什么特别之处吗?在您的模型中是否使用了和重写方法(例如)?如果是的话,你能给我们看一下代码吗?你能在你的代码库中搜索
show_date
,看看有没有其他特别的东西对它做了什么吗?@TarynEast在尝试一百万件事情的混乱中,有些事情奏效了,我不确定它是什么,但我想这是因为编辑了一个没有日期的条目。谢谢你的帮助,非常感谢他-你不喜欢这样的修复吗。。。“我不知道我修好了什么,但它现在正在工作,所以我会慢慢后退……”:D
--- !ruby/object:Show
raw_attributes:
  id: 3
  title: Show 3
  show_date: 2017-03-05
  description: Show 3 description
  ticket_cost: "$3"
  location: Show 3 location
  created_at: &2 2017-02-05 21:19:15.000000000 Z
  updated_at: &4 2017-02-05 21:19:15.000000000 Z
attributes: !ruby/object:ActiveRecord::AttributeSet
  attributes: !ruby/object:ActiveRecord::LazyAttributeHash
    delegate_hash:
      id: !ruby/object:ActiveRecord::Attribute::FromDatabase
        name: id
        value_before_type_cast: 3
        type: !ruby/object:ActiveModel::Type::Integer
          precision: 
          scale: 
          limit: 4
          range: !ruby/range
            begin: -2147483648
            end: 2147483648
            excl: true
        original_attribute: 
      title: !ruby/object:ActiveRecord::Attribute::FromDatabase
        name: title
        value_before_type_cast: Show 3
        type: &1 !ruby/object:ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::MysqlString
          precision: 
          scale: 
          limit: 255
        original_attribute: 
      show_date: !ruby/object:ActiveRecord::Attribute::FromDatabase
        name: show_date
        value_before_type_cast: 2017-03-05
        type: !ruby/marshalable:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
          :__v2__: []
          []: &3 !ruby/object:ActiveRecord::Type::DateTime
            precision: 0
            scale: 
            limit: 
        original_attribute: 
      description: !ruby/object:ActiveRecord::Attribute::FromDatabase
        name: description
        value_before_type_cast: Show 3 description
        type: !ruby/object:ActiveModel::Type::Text
          precision: 
          scale: 
          limit: 65535
        original_attribute: 
      ticket_cost: !ruby/object:ActiveRecord::Attribute::FromDatabase
        name: ticket_cost
        value_before_type_cast: "$3"
        type: *1
        original_attribute: 
      location: !ruby/object:ActiveRecord::Attribute::FromDatabase
        name: location
        value_before_type_cast: Show 3 location
        type: *1
        original_attribute: 
      created_at: !ruby/object:ActiveRecord::Attribute::FromDatabase
        name: created_at
        value_before_type_cast: *2
        type: !ruby/marshalable:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
          :__v2__: []
          []: *3
        original_attribute: 
      updated_at: !ruby/object:ActiveRecord::Attribute::FromDatabase
        name: updated_at
        value_before_type_cast: *4
        type: !ruby/marshalable:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
          :__v2__: []
          []: *3
        original_attribute: 
new_record: false
active_record_yaml_version: 1
show.show_date.try(:to_formatted_s, :long_ordinal)
<%= @shows.inspect %>