2016-11-27 2 views
0

Итак, я изменял свой индексный указатель, чтобы он отображал только определенные поля на основе переменной экземпляра с поименованными полями, но когда я это сделал, он работал отлично, за исключением поля datetime, которое генерирует ошибку. Пример: undefined method empty?' for Tue, 22 Nov 2016 23:01:00 +0000:DateTime Вот код просмотра.Rails view, undefined method `empty? ' для объекта datetime

<p id="notice"><%= notice %></p> 

<h1>Articles</h1> 

<table> 
    <thead> 
    <% @fields = ["headline", "content","date", "locale", "classification" ] unless @fields.present? %> 
    <tr> 
     <% @fields.each do |field| %> 
     <th><%= "#{field.titleize}" %></th> 
     <% end %> 
    </tr> 
    </thead> 

    <tbody> 
    <% @articles.each do |article| %> 
     <tr> 
     <% @fields.each do |field| %> 
     <td><%= simple_format article.send(field) %></td> 
     <% end %> 
     <td><%= link_to 'Show', article %></td> 
     <td><%= link_to 'Edit', edit_article_path(article) %></td> 
     <td><%= link_to 'Destroy', article, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
     </tr> 
    <% end %> 
    </tbody> 
</table> 

<br> 

<%= link_to 'New Article', new_article_path %> 

А вот код модели

class Article 
    include Mongoid::Document 
    validates :classification, 
    :inclusion => { :in => [ 'unclassified', 'medical', 'non medical'] } 
    validates :headline, presence: true 
    validates :content, presence: true 
    field :headline, type: String 
    field :content, type: String 
    field :classification, type: String 
    field :weak_classification, type: String 
    field :locale, type: String 
    field :date, type: DateTime 
end 

Как я могу решить эту проблему?

ответ

1

Вы можете преобразовать поля в string.

<%= simple_format article.send(field).to_s %> 

Или лучше проверить тип поля и отформатировать его.

def format_article_field(field) 
    value = article.send(field) 

    if value.kind_of?(DateTime) 
    value.to_s(:short) # any format shortcut here 
    else 
    simple_format(value.to_s) 
    end 
end 

<%= format_article_field field %>