在ruby中有更简洁的编码方式吗?

Ric*_*d G 0 ruby coding-style ruby-on-rails

有没有更好的方法来编写这段代码?对我来说似乎有点冗长.

我正在使用太阳黑子SOLR,该stored()方法返回一个nil或一个值数组,我总是想要第一个值,如果它存在,或只是打印一个空字符串是好的.

 <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>
Run Code Online (Sandbox Code Playgroud)

Gre*_*tek 6

<%- [:seo_title, :title, :publish_at].each do |key| %>
  <td><%= search_result.stored(key).try(:first) %></td>
<% end %>
Run Code Online (Sandbox Code Playgroud)

无论如何,如果只有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>
Run Code Online (Sandbox Code Playgroud)