2013-03-25 34 views
0

在我的顯示視圖我有:Ruby on Rails的實例變量,如果ELSIF

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

在我的控制器,我有:

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

的想法是,如果有評論已寫入, 它們顯示在當前存在的div下面的頁面上 - 這部分工作正常。

但是,如果沒有撰寫評論,我只會在現有的div下面沒有任何內容。我怎麼能顯示一些文字,如「沒有寫評論,對不起!」

理想情況下,我想顯示一個部分,因爲我將顯示更多文本/圖像。

我工作是這樣的:

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

但它不工作。謝謝你的幫助!

克里斯

回答

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 2013-03-25 20:19:20

+0

歡迎您:)隨意以加票的形式表達您的感謝(但只有當您發現答案有幫助時)。 – 2013-03-26 00:21:50

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 2013-03-25 21:00:05

+0

是的,已更新。謝謝。 – 2013-03-26 00:20:34

相關問題