1

我是 Sinatra 的新手,我正试图弄清楚如何在模板中查询集合。在这个特定的例子中,我试图找出在一个特定的对象集合(c在这个例子中)中是否有一个具有特定值的对象。

<% if c.votes #then filter by an id for example through all of the objects...  %>
    yes, it exists
<% else %>
    nope, doesn't exist
<% end %>

另外,我习惯了 django 的过滤器,是否有类似的在线文档概述了 Sinatra 的各种查询功能?

4

2 回答 2

2

它只是一个标准集合吗?您可以使用 any?,如果提供的块找到匹配项,则返回 true。然后,您将测试每个对象在该块中查找的值。

<% if c.votes.any? { |a| a.id == whatever } %>
 ...
<% else %>
 ...
<% end %>

这实际上取决于“投票”是什么。

于 2012-04-09T01:25:55.513 回答
1

在 rails 你会使用<% if c.votes.present? %>which 是有帮助的,因为否则如果 c.votes 是一个空数组,则条件将评估为真。

在 Sinatra 中,您没有 .present?,但您有两个选择:<% unless c.vote.empty? %><% if !c.votes.empty %>. 我不喜欢任何一个选项的可读性,所以我会重新创建添加礼物?数组方法:

class Array
  def present?
    !empty?
  end
end

你在哪里添加这个取决于你如何设置你的 Sinatra 应用程序。一种选择是将它直接添加到您的主应用程序文件中。

于 2012-04-09T01:19:37.230 回答