2013-08-04 140 views
0

這是一個示例代碼,只是爲了說明問題。檢查一個實例變量是否有一個或多個對象?

當我點擊其中一個按鈕時,我會加載一些實例變量到視圖中並渲染它。我不知道變量是否有一個或多個內部對象。因此,我必須檢查變量是否有內部的一個或多個對象,何時將其加載到視圖中(否則如果內部只有一個對象,則.each方法將失敗)。或者有沒有辦法只將一個對象作爲數組存儲在變量中?

aa.html.erb

<div class="fill"></div> 
<%= button_to 'ALL', { :controller => 'animals', :action => 'vaa', :id => "0" } , remote: true %> 
<%= button_to 'ELEPHANT', { :controller => 'animals', :action => 'vaa', :id => "1" } , remote: true %> 
<%= button_to 'ZEBRA', { :controller => 'animals', :action => 'vaa', :id => "2" } , remote: true %> 

<div class="fill3"></div> 


<%= render 'animals/vaa' %> 

_vaa.html.erb

<div class="fill4"> 
    <% @animals.each do |animal| %> 
    <table> 
     <tr> 
      <td><%= animal.name %></td> 
      <td><%= animal.race %></td> 
      <td><%= link_to 'Show', animal %></td> 
      <td><%= link_to 'Edit', edit_animal_path(animal) %></td> 
      <td><%= link_to 'Destroy', animal, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
     </tr> 
    </table> 
    <% end %> 
</div> 
<div class="fill5"> 
</div> 

animals_controller.rb

def vaa 
    if params[:id] == "0" 
     @animals = Animal.all 
    elsif params[:id] == "1" 
     @animals = Animal.first 
    elsif params[:id] == "2" 
     @animals.second 
    end 
    respond_to do |format| 
     format.js 
    end 
    end 

回答

0

您可以重新轉@animals作爲數組,如果@animals你檢索不是陣列像如下:

def vaa 
    if params[:id] == "0" 
     @animals = Animal.all 
    elsif params[:id] == "1" 
     @animals = Animal.first 
    elsif params[:id] == "2" 
     @animals.second 
    end 

    # The following line makes sure @animals is Array if @animals is not an array. 
    @animals = [@animals] unless @animals.kind_of?(Array) 

    respond_to do |format| 
     format.js 
    end 
    end 
+0

是的,謝謝:) – allegutta

相關問題