2010-10-29 20 views
2

我在我的表中的下列列:如何循環Rails中的ActiveRecord值?

值1 值2 值3 VALUE4 值5

我希望能夠遍歷他們是這樣的:

<% for i in 1..5 %> 
    <div><%= user."value#{i}"</div> 
<% end %> 

當然這一點代碼不起作用,那麼如何從一個字符串中獲取ActiveRecord對象的值?

回答

2

嘗試使用send(參見紅寶石documentation)。

+0

謝謝,正是我需要的! Ruby很棒。 – Alex 2010-10-29 14:51:29

+0

沒問題。是的,Ruby很棒! :) – 2010-10-30 08:11:45

4

您可以使用send方法將方法名作爲字符串發送給任何對象。下面的例子就是你要找的。

<% for i in 1..5 %> 
    <div><%= user.send("value#{i}") %></div> 
<% end %> 
7

哇,除非你真的有你的屬性不好的命名慣例,send方法只會讓你一半。你的屬性名稱是否按順序編號?

這裏的通過而不管它們的名字你的屬性如何循環:

<% user.attributes.each do |name, value| %> 
    <div> 
    <%= name %>: <%= value %> 
    </div> 
<% end %> 

我希望這可以幫助,讓我知道如果您有任何問題。

+1

這個問題是,它會做所有的屬性。他的Rails應用程序完全有可能與一些可怕的格式化/命名的遺留數據庫進行交互,並且有5個字段分別命名爲「contact1」,「contact2」等。 – 2010-10-29 17:50:16

+0

這肯定會遍歷所有屬性,如所宣傳的。如果你想除掉一些,你可以很容易地用select方法做到這一點。我只是不希望他覺得他必須通過這種方式來命名字段才能夠通過它們。 – 2010-10-29 18:01:08

+0

就像Mike說的那樣,數據庫中有些可怕的東西看起來像這樣:value1,value2,value3,value4,value5。所以是的,他們是按順序編號的。雖然好點。 – Alex 2010-10-30 11:53:40