如何检查实例变量

时间:2018-02-27 21:12:00

标签: ruby-on-rails

我是rails的新手并且卡住了:我有一个文章,主题和链接的模型。在显示整篇文章的页面上,我在div框中显示所有@topics和所有@links,它们与本文(@topics.each ...)相关联。 有时,这篇文章中没有/没有主题/主题或链接/链接,我不想显示div框。 如何测试实例变量@topics是否为空,因此不能显示?我是在视图中检查这个还是在控制器中检查它?由于我没有真正的线索,我不知道从哪里开始寻找。

3 个答案:

答案 0 :(得分:1)

在视图中,将each循环放在unless @topics.empty?下。

编辑:但这并未涵盖未设置@topics实例变量的情况。有关更好的模式,请参阅tadman的回复。

答案 1 :(得分:1)

通常的模式是:

if (@topics.present?)
  @topics.each do |topic|
    # ... Show each row
  end
else
  # .. Show a "no entires" row.
end

答案 2 :(得分:0)

我可能误解了你的问题。

假设:

  1. 您在erb
  2. 中执行此操作
  3. 您有一个@article变量和
  4. 您的关联设置正确,因此您可以执行@article.topics
  5. 然后我认为你可以这样做:

    <%- if @article.topics.any? %>
      <div class='topics'>
        <%- @article.topics.each do |topic| %>
          <div class='topic'>
            ... do some stuff
          </div>
        <% end %>
      </div>
    <% end %>
    

    当然,类似于@article.links

    我的erb非常生疏,所以我可能在那里遇到了问题。