如何有效地检查传递给视图的值是否为空或空

时间:2012-12-07 13:56:18

标签: ruby ruby-on-rails-3.2 erb

我在application.erb文件中有以下代码:

<%= hidden_div_if(@cart.line_items.empty?, :id => "cart") do %>

除非我加载一个没有收到@ cart.line_items对象的页面,否则当我收到以下错误时,这个工作正常:

undefined method `line_items' for nil:NilClass

如果.erb为空并且@cart.line_items为空,我如何重写@cart文件中的行以使其行为相同?


根据以下答案,我更改了我的代码:

<%= hidden_div_if(!@cart.nil? && @cart.line_items.empty?, :id => "cart") do %>

*已更新以匹配Baldrick添加到此问题的评论(因为它比我原来的编辑更简洁)。

3 个答案:

答案 0 :(得分:2)

使用@cart.blank?检查它是否为空。 blank?方法是rails扩展。

答案 1 :(得分:1)

使用Object类的blank?方法。

如果对象为false,空或空白字符串,则该对象为空。例如,“”,“”,nil,[]和{}为空。 例如

 [].blank? #true
 "".blank? #true
 "       ".blank? #true
 false.blank? #true
 {}.blank? #true
 nil.blank? #true

答案 2 :(得分:0)

<%= hidden_div_if(@cart.to_a.line_items.empty?, :id => "cart") do %>