【问题标题】:Confused about nil rails view对 nil rails 视图感到困惑
【发布时间】:2013-07-04 17:20:11
【问题描述】:

我只是想确保某个值存在于某个块中,如果存在则显示其内容,如果不显示“尚无此内容”。我研究了otherSO posts,但我的实现必须关闭。

<% @profiles.each do |profile| %>
  <%= profile.current_club %>
  <% if profile.listings %>
    <%= video_thumb_embed(profile.listings.last.video).html_safe %>
  <% end %>  
<% end %>
  • 视频是列表模型的一个属性。
  • 我正在尝试在索引页面上显示所有用户配置文件,并在此索引页面上显示他们添加的最新视频。
  • 如果用户没有添加列表,则会出错,因此我在每个块中添加了我认为是简单检查的内容,但出现以下错误

    nil:NilClass 的未定义方法 `video'

我在这里不明白什么?有了上面的内容,我希望一个配置文件会在索引页面上显示一个视频,如果有的话,如果没有,它不会显示任何内容。

【问题讨论】:

  • 您的错误表明profile.listings.last 为零。尝试输出 profile.listings 以确保您有一个列表数组。
  • 我可以确认输出profile.listings 会给出[]。好的,所以如果用户尚未添加列表,则数组将为空。这是否意味着我将只检查数组是否有任何元素并且我的检查会按预期工作?
  • 是的,您只需将if profile.listings 更改为if !profile.listings.blank?

标签: ruby-on-rails view null


【解决方案1】:

您要检查并确保 profile.listings 不是空白或空的。如果对空数组调用last 方法,则返回nil。

&lt;% if profile.listings %&gt; 将返回 true,即使您有一个空数组。

&lt;% if !profile.listings.blank? %&gt; 或 &lt;% unless profile.listings.blank? %&gt; 应该可以解决问题。

【讨论】:

  • 完美,我选择.empty? 只是为了我自己的可读性。谢谢你说出来。一切正常。
  • 没问题,很高兴能帮上忙。
猜你喜欢
  • 2012-05-21
  • 2017-07-31
  • 2014-07-08
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多