2013-03-25 1 views
0

В моем шоу Вид у меня есть:рубин на рельсах переменную экземпляра и если ELSIF

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

В моем контроллере у меня есть:

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

Идея заключается в том, что если есть отзывы, которые были написаны , они отображаются на странице под делениями, которые в настоящее время существуют - эта часть работает нормально.

Но если отзывов нет, я просто ничего не получаю под существующими в настоящее время div. Как я мог отобразить какой-то текст, например «Нет отзывов написано, извините!»

В идеале я хотел бы показать частичное, потому что я буду показывать больше текстов/изображений.

я работал на что-то вроде этого:

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

Но это не работает. Спасибо за любую помощь!

Chris

ответ

0

Попробуйте это,

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

Отлично! Прекрасно работает. Так легко, когда вы видите код, сделанный таким образом. Спасибо, Майкл. – CHarris

+0

Добро пожаловать :) Не стесняйтесь выразить свою благодарность в форме голосования (но только если вы нашли ответ полезным). –

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

например

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 
+1

Не будет ли пустой массив проходить через оператор if точно так же, как непустой массив? Возможно, вы захотите использовать '<% if @reviews && @ reviews.present? %> ' – depa

+0

Да, обновлено. спасибо. –

Смежные вопросы