所以我修改了我的索引视图,使其只根据名为fields的实例变量呈现特定字段,但是当我这样做时,除了生成错误的datetime字段之外它工作得很好。示例:undefined method empty?' for Tue, 22 Nov 2016 23:01:00 +0000: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
我该如何解决这个问题?
答案 0 :(得分: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 %>