当没有记录时,如何显示“尚未输入”信息?

时间:2011-06-07 22:51:11

标签: ruby-on-rails records

在我的应用程序中,我有会场记录,每个人都可以有很多照片和评论。

如何在没有任何内容的情况下显示“未输入任何内容”消息,以便显示照片或评论?

以下是我目前如何展示它们:

查看

  <div id="reviews">
    <%= render :partial => 'reviews/review', :collection => @venue.reviews %>
  </div>

照片(使用颜色框显示)

  <div class="venue_photos_container">
    <div class="ppy4" id="ppy4">
      <ul class="ppy-imglist">
        <% for venuephoto in @venue.venuephotos %>
          <li class="venue_photo_thumb_container"><%= link_to image_tag(venuephoto.venuephoto.url(:image_scroller), :class => "venue_photo"), venuephoto.venuephoto.url(:large), :rel => "venue_photo_colorbox" %></li>
        <% end %>
      </ul>
      <div class="ppy-outer">
        <div class="ppy-stage">
          <div class="ppy-nav">
            <a class="ppy-prev" title="Previous image">Previous image</a>
            <a class="ppy-switch-enlarge" title="Enlarge">Enlarge</a>
            <a class="ppy-switch-compact" title="Close">Close</a>
            <a class="ppy-next" title="Next image">Next image</a>
          </div>
        </div>
      </div>
    </div>
  </div>

感谢任何帮助,非常感谢!

2 个答案:

答案 0 :(得分:3)

我会计算场地照片并通过条件声明计算。如果它为零,则显示“无图片”,否则显示照片。

<div class="venue_photos_container">
  <div class="ppy4" id="ppy4">
    <% if @venue.venuephotos.count.zero? %>
      Sorry, no pictures!
    <% else %>
      <ul class="ppy-imglist">
        <% for venuephoto in @venue.venuephotos %>
          <li class="venue_photo_thumb_container"><%= link_to image_tag(venuephoto.venuephoto.url(:image_scroller), :class => "venue_photo"), venuephoto.venuephoto.url(:large), :rel => "venue_photo_colorbox" %></li>
        <% end %>
      </ul>
      <div class="ppy-outer">
        <div class="ppy-stage">
          <div class="ppy-nav">
            <a class="ppy-prev" title="Previous image">Previous image</a>
            <a class="ppy-switch-enlarge" title="Enlarge">Enlarge</a>
            <a class="ppy-switch-compact" title="Close">Close</a>
            <a class="ppy-next" title="Next image">Next image</a>
          </div>
        </div>
      </div>
    <% end %>
  </div>
</div>

只是免责声明,此代码演示了基本概念,但我使用HAML,因此此ERB可能不完全正确。

答案 1 :(得分:1)

我这样做的另一种方法是让我不再使用if / then逻辑在我的视图中:

在Venue.rb:

class Venue
  def photo_state
    venuephotos.count > 0 ? 'with_photos' : 'without_photos'
  end
end

在show.html.erb中:

<%= render("venue_#{photo_state}" %>

在_venue_with_photos.html.erb中:

<ul class="ppy-imglist">
  <%= render @venue.venuephotos %>
</ul>

在_venue_without_photos.html.erb中:

Sorry, no pictures!

在_venuephoto.html.erb

<li class="venue_photo_thumb_container"><%= link_to image_tag ... %></li>

是的,有点痴迷,但我喜欢在视图中除了“render”之外没有代码。无论您是将所有代码都放在一个文件中还是每个以易于理解的块形式分解的内容,都是如此。偏好的东西 - 没有真正正确的答案。