2010-11-11 13 views
0

如何從結果中獲取一個字段的值?在這裏我得到了什麼至今:Rails - 通過指定列名獲得價值

這給了我正確的價值,當我使用行[8]:

<% @result.each{|row| %> 
    <tr> 
    <% row.each{|key| %> 
     <td><%= key %></td> 
    <% } %> 
     <td><%= row[1] %></td> 
    </tr> 
<% } %> 

不過,我試圖讓被列名的值。使用行[「the_column_name」]似乎不工作,因爲它返回「無法將字符串轉換爲整數」。我認爲這是錯誤的,因爲這是一個數組。我如何通過引用列名來獲取值?

+2

什麼是創建@result?它是一個哈希數組,還是其他數組? PS。由於它是一個數組,我建議將它命名爲@results,而不是@result。或者更好的@cars,@posts等 - 什麼是模型/真實世界obj? - 一些自我記錄的代碼。 – 2010-11-11 04:45:21

回答

0

如果您的@result數組是ActiveRecord搜索的結果,它將是一個對象數組,其中的單個對象通常會模擬數據庫表的行。您訪問使用.訪問其次是字段名的單個對象的屬性,(即行的字段):

<% @result.each{|row| %> 
    <tr> 
     <td><%= row.fieldname1 %></td> 
     <td><%= row.fieldname2 %></td> 
    </tr> 
<% } %> 

更換fieldname1和fieldname2你要顯示的字段的名稱。

+0

我收到「undefined method'fieldname1'」錯誤。當然,我用我桌子上的實際字段名稱。 – oprogfrogo 2010-11-11 19:59:26

+0

我忘了提及,結果是使用execute方法進行直接的sql查詢。 – oprogfrogo 2010-11-11 20:00:57

+0

看看我更新的示例代碼。之前我曾在NyQuil上寫過這篇文章。我認爲問題在於你試圖循環播放你的行中的字段,這是沒有必要的。 ActiveRecord會將查詢返回的結果解析爲對象的屬性。每個對象都是一行,對象的每個屬性都是查詢返回的字段。 – 2010-11-12 00:07:35