简体   繁体   English

ruby on rails实例变量,如果是elsif

[英]ruby on rails instance variable and if elsif

In my Show View I have: 在我的显示视图中,我有:

  <div class="reviews" >
  <% @reviews.each do |review| %>
  <%= review_block review %>
  <% end %>
  </div>

In my Controller I have: 在我的控制器中,我有:

  def show    
  @review = Review.new
  @reviews = @user.reviews
  end

The idea is that if there are reviews that have been written, they are displayed on the page underneath the divs that currently exist- this part is working ok. 想法是,如果有已撰写的评论,则将它们显示在当前存在的div下方的页面上-该部分可以正常工作。

But if there are no reviews written, I just get nothing underneath the currently existing divs. 但是,如果没有任何评论,那么在现有的divs下我什么也收不到。 How could I display some text like 'No reviews written, sorry!' 如何显示“未写评论,对不起!”之类的文字。

Ideally I'd like to show a partial, because I will be displaying more texts/ images. 理想情况下,我想显示一部分,因为我将显示更多的文本/图像。

I was working on something like this: 我正在做这样的事情:

  <div class="reviews" >
  <% @reviews.each do |review| %>
  <%= review_block review if review>0 %>
  <%= else render :partial => 'layouts/no_reviews' %>
  <% end %>

But it's not working. 但这不起作用。 Thanks for any help! 谢谢你的帮助!

Chris 克里斯

<div class="reviews" >
<% if @reviews && @reviews.present? %>
  <% @reviews.each do |review| %>
  <%= review_block review %>
<% end %>
<%= else render :partial => 'layouts/no_reviews' %>
<% end %>

eg 例如

1.9.3-p327 :012 > if @abc
1.9.3-p327 :013?>   puts 'yes'
1.9.3-p327 :014?>   end
 => nil # We get noting
1.9.3-p327 :015 > @abc='lolololo'
 => "lolololo" 
1.9.3-p327 :016 > if @abc
1.9.3-p327 :017?>   puts 'yes'
1.9.3-p327 :018?>   end
yes # We get yes

Try this, 尝试这个,

<div class="reviews" >
  <% if @reviews.any? %>
    <% @reviews.each do |review| %>
      <%= review_block review %>
    <% end %>
  <% else %>
    <%= render :partial => 'layouts/no_reviews' %>
  <% end %>
</div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM