Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 检查表列是否有任何值_Ruby On Rails - Fatal编程技术网

Ruby on rails 检查表列是否有任何值

Ruby on rails 检查表列是否有任何值,ruby-on-rails,Ruby On Rails,我有一个名为shirt的模型,它有一个名为fabric的字段, 在控制器中我有 @fabrics = Shirt.uniq.pluck(:fabric) 在视图上,我希望显示一个…,但前提是shirts表的fabric列至少包含一个值。我试过: <% if @fabrics != nil %> <div> ... </div> <% end %> ... 但即使整列没有值,仍然可见。我也试过了 没有成功。 在呈现div之前,

我有一个名为
shirt
的模型,它有一个名为
fabric
的字段, 在控制器中我有

@fabrics = Shirt.uniq.pluck(:fabric)
在视图上,我希望显示一个
,但前提是
shirts
表的
fabric
列至少包含一个值。我试过:

<% if @fabrics != nil %>
  <div>
    ...
  </div>
<% end %>

...
但即使整列没有值,
仍然可见。我也试过了

没有成功。 在呈现div之前,如何检查列是否为空?

试试看

<% unless @fabrics.blank? %>

试试看


在控制器中尝试此操作

@fabrics = Shirt.uniq.pluck(:fabric).reject { |f| f.nil? || f.empty? }
在控制器中试试这个

@fabrics = Shirt.uniq.pluck(:fabric).reject { |f| f.nil? || f.empty? }
Shirt.uniq.purch(:fabric)
返回一个
关系
。因此,它永远不会是
nil

关系定义sql查询的部分。这表示:给我数据库中织物的(所有|一个)唯一值。要实际运行该查询,您需要对该关系调用触发数据库调用的方法:
all
first
each
any?
blank?

由于缺乏背景,我不知道你如何使用你的
衬衫
型号。但我猜这个问题永远不会给你预期的答案。因为
Shirt.uniq.purch(:fabric)
只要该表中至少有一行,就会始终返回一些内容。假设表中只有一行,它的
fabric
nil
,而
Shirt.uniq.pulk(:fabric)。空白?
将决定
Shirt.uniq.pulk(:fabric)
[nil]
。和
[nil]。空白?==错误

如果您处理一件特定的衬衫,请使用
@shirt.fabric.present?
如果您想知道数据库中是否至少有一件衬衫没有织物
衬衫。其中(织物:无)。有吗?

我建议阅读:

Shirt.uniq.puck(:fabric)
返回一个
关系
。因此,它永远不会是
nil

关系定义sql查询的部分。这表示:给我数据库中织物的(所有|一个)唯一值。要实际运行该查询,您需要对该关系调用触发数据库调用的方法:
all
first
each
any?
blank?

由于缺乏背景,我不知道你如何使用你的
衬衫
型号。但我猜这个问题永远不会给你预期的答案。因为
Shirt.uniq.purch(:fabric)
只要该表中至少有一行,就会始终返回一些内容。假设表中只有一行,它的
fabric
nil
,而
Shirt.uniq.pulk(:fabric)。空白?
将决定
Shirt.uniq.pulk(:fabric)
[nil]
。和
[nil]。空白?==错误

如果您处理一件特定的衬衫,请使用
@shirt.fabric.present?
如果您想知道数据库中是否至少有一件衬衫没有织物
衬衫。其中(织物:无)。有吗?

我建议阅读:


您从控制台中得到什么:
@fabrics=Shirt.uniq.purcle(:fabric)
?和
@fabrics=Shirt.uniq.pulk(:fabric).class
?uniq对class衬衫有效吗?在控制台上尝试并显示输出。@Miotsu我在同一个视图上使用
@fabrics
来显示所有的结构,它正在工作。这并不能回答我的问题:)如果我正确地阅读了你的问题,
就足够了。你从控制台得到什么:
@fabrics=Shirt.uniq.pulk(:fabric)
?和
@fabrics=Shirt.uniq.pulk(:fabric).class
?uniq对class衬衫有效吗?在控制台上尝试并显示输出。@Miotsu我在同一个视图上使用
@fabrics
来显示所有结构,并且它正在工作。这并不能回答我的问题:)如果我正确阅读了您的问题,
就足够了。谢谢您的帮助,请您解释一下
.reject
做了什么。返回一个新数组,其中包含块不为真的self中的项目(请参阅此处的更多内容)。感谢这项工作,请您解释一下
.reject
做了什么。返回一个新数组,其中包含块不为真的self中的项目(请参阅此处的更多信息)我在控制器上使用了@Thaha-answer,在视图上使用了这个答案,它成功了。谢谢Pierre。我在控制器上使用了@Thaha answer,在视图上使用了这个答案,效果很好。谢谢你,皮埃尔。