有没有更好的方法来编写此代码?对我来说似乎有点冗长。
我正在使用太阳黑子SOLR,stored()
方法返回nil
或值数组,我总是想要第一个值,如果它存在,或者只打印一个空字符串就可以了。< / p>
<td><%= search_result.stored(:seo_title).first() if search_result.stored(:seo_title).present? %></td>
<td><%= search_result.stored(:title).first() if search_result.stored(:title).present? %></td>
<td><%= search_result.stored(:publish_at).first() if search.result.stored(:publish_at).present? %></td>
答案 0 :(得分:6)
<%- [:seo_title, :title, :publish_at].each do |key| %>
<td><%= search_result.stored(key).try(:first) %></td>
<% end %>
无论如何,如果只有3个键,我宁愿继续显式渲染所有3个表格单元格,这里的循环具有相同的行数并且看起来不太好。所以另一种选择是:
<td><%= search_result.stored(:seo_title).try(:first) %></td>
<td><%= search_result.stored(:title).try(:first) %></td>
<td><%= search_result.stored(:publish_at).try(:first) %></td>
答案 1 :(得分:0)
另一种选择是这样写:
<td><%= (search_result.stored(:seo_title) || []).first %></td>
<td><%= (search_result.stored(:title) || []).first %></td>
<td><%= (search_result.stored(:publish_at) || []).first %></td>