2011-06-14 129 views
16

我想執行一個if條件,如果在數組數組(@associated_linked_pub)中找到linkedpub.LPU_ID,請執行一些操作。如何檢查值是否在數組數組中找到

我試過以下,但語法不正確。

任何建議是最welcomed..Thanks很多

<% for linkedpub in Linkedpub.find(:all) %> 
    <% if linkedpub.LPU_ID IN @associated_linked_pub %> 
     # do action 
    <%end%> 
<%end%> 
+0

[檢查數組中是否存在數值在Ruby中可能的重複](http://stackoverflow.com/questions/1986386/check-if-value-exists-in-array-in-ruby) – Mat 2011-06-14 21:01:21

回答

34

您可以使用Array#include?

所以......

if @associated_linked_pub.include? linkedpub.LPU_ID 
    ... 

編輯

如果@associated_linked_pub是ActiveReco的列表RD對象那就試試這個來代替:

if @associated_linked_pub.map{|a| a.id}.include? linkedpub.LPU_ID 
    ... 

編輯

更詳細你的問題看,它看起來像你正在做的事情是非常低效和不可擴展的。相反,你可以做...

對於Rails的3.0:

Linkedpub.where(:id => @associated_linked_pub) 

對於Rails的2.X:

LinkedPub.find(:all, :conditions => { :id => @associated_linked_pub }) 

Rails會自動創建查詢SQL,如:

SELECT * FROM linkedpubs WHERE id IN (34, 6, 2, 67, 8) 
+0

感謝很多jits .. – tanya 2011-06-14 22:15:19

1
@associated_linked_pub.collect(&:id).include?(linkedpub.LPU_ID) 
1

if @associated_linked_pub is一個數組,嘗試

if @associated_linked_pub.include?(linkedpub.LPU_ID) 
3
linkedpub.LPU_ID.in?(@associated_linked_pub.collect(&:id)) 

在這些情況下使用in?一直感到更自然的我。

+0

你能提供文件鏈接嗎? – sadfuzzy 2014-10-14 10:23:43

相關問題