2013-10-11 64 views
1

當搜索解決方案時,我在StackOverflow上找到了這個:Generate an HTML table from an array of hashes in Ruby將表格製作成散列表

這很好,但我是一個新的程序員,並不能讓它與軌道工作。我有一個名爲products的數據庫表。每個產品都有一個稱爲數據的字段,用於存儲散列。該散列的樣子:

{"type"=>"book", "price"=>"7.99"} 

我使用HAML,並且我認爲現在的樣子:(這僅僅是打印出的哈希):

- @products.each do |product| 
    =product.name 
    =product.data #THIS PRINTS A HASH LIKE THE ONE ABOVE 
    %hr 

所以,現在,我想有關鍵字(例如,類型和價格)在表頭中,並且每個產品都是值得的。但是我也想擁有「靜態」列,這些列不是從哈希中生成的,就像產品名稱一樣。這裏有一個畫面:

enter image description here

回答

1

你可以簡單的讓你的價值觀是這樣的:

%table 
    %thead 
    %tr 
     %th 
     Name 
     %th 
     Type 
     %th 
     Price 
    %tbody   
    - @products.each do |product| 
     %tr   
     %td 
      = product.name 
     %td 
      = product.data["type"] unless product.data.nil? 
     %td 
      = product.data["price"] unless product.data.nil? 
1

的StackOverflow的文章,如果您不是數據庫之外的其它來源,例如讀取你的數據,你引用偉大的作品來自YAML或CSV文件,然後將其格式化爲HTML。

這篇文章中的方法的優點在於它在Hash中使用什麼鍵是靈活的,例如,你有一個靈活的「模式」。根據您的輸入數據,格式化的HTML表格可以包含不同的列。

另一方面,在Rails應用程序中,您通常會使用固定架構的基礎數據庫,例如,屬性(鍵)是事先熟知的,並且在您的遷移中定義並在您的模型中引用。因爲這些屬性是固定的,所以HTML或HAML表單是固定的,不像第一種情況那樣可變,並且表單可以僅作爲模板文件提供。

這就是爲什麼你從@有app/views/your-model-name/

的例子在Rails中的意見Rails的傢伙告訴您如何爲您的產品型號這樣的固定形式會是什麼樣的索引操作。

參見:http://guides.rubyonrails.org/layouts_and_rendering.html

和:http://guides.rubyonrails.org/(下查看)