我试图通过仅在相册数量大于 3 时显示新相册的链接来限制用户可以创建的相册数量。我收到的错误是“与非类/模块相比”
<% if @albums < 3 %>
<div class="all-albums" id="position-albums">
<%= link_to 'New Album', "/albums/new", :style => "text-decoration:none; color:black; font-size: 20px;" %>
<div class="plus-sign">
<%= link_to '+', "/albums/new", :style => "text-decoration:none; color:black; font-size:80px; color:#85adad;" %>
</div>
</div>
<% end %>
如果
@albums
是 AR 集合,您可以调用 size
、length
或 count
方法来识别其中对象的数量。例如:
<% if @albums.size <= 3 %>
此外,根据您的帖子,您应该使用
<=
而不是 <
。
这3种方法各有不同,您应该根据自己的情况选择您需要的一种:
调用
count
(不带块)将执行 SELECT COUNT(*)
查询。如果您从数据库获取最新的计算结果至关重要,而不是使用基于加载结果的缓存版本,或者您实际上不需要记录本身,只需要计数计算,则应该使用此方法。
调用
length
将执行 SELECT *
查询并在结果集合上调用 size
方法(不会对数据库产生任何进一步的查询)。无论如何,如果您要使用基础记录,这是更好的选择。
在尚未加载的集合上调用
size
将执行 SELECT COUNT(*)
。否则,将在加载的集合上调用 size
方法(不会对数据库产生任何进一步的查询)。