【问题标题】:Hashes made into tables哈希表
【发布时间】:2013-10-12 00:20:32
【问题描述】:

在寻找解决方案时,我在 StackOverflow 上找到了这个:Generate an HTML table from an array of hashes in Ruby

这很好用,但我是一个新程序员,不能让它与 rails 一起工作。我有一个名为 products 的数据库表。每个产品都有一个称为数据的字段,用于存储哈希。这个哈希看起来像:

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

我正在使用haml,我现在的视图看起来像:(这只是打印出哈希):

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

所以现在,我想让键(例如,类型和价格)在表头中作为 's,并且每个产品的值都是 's。但我也想拥有不是从哈希生成的“静态”列,比如产品名称。这是一张图片:

【问题讨论】:

    标签: ruby-on-rails ruby hash


    【解决方案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?
    

    【讨论】:

      【解决方案2】:

      如果您从数据库以外的其他来源读取数据,您引用的 StackOverflow 文章效果很好,例如来自 YAML 或 CSV 文件,然后将其格式化为 HTML。

      本文中方法的优点是它在哈希中使用哪些键方面很灵活,例如你有一个灵活的“模式”。根据您的输入数据,格式化的 HTML 表格可以包含不同的列。

      另一方面,在 Rails 应用程序中,您通常有一个具有固定架构的底层数据库,例如属性(键)是事先众所周知的,并且在您的迁移中定义并在您的模型中引用。因为属性是固定的,所以 HTML 或 HAML 表单是固定的,而不是像第一种情况那样可变,并且可以将表单作为模板文件提供。

      这就是为什么您在 Rails 中拥有 app/views/your-model-name/ 下的视图

      @rails-guy 的示例向您展示了 Product 模型的这种固定形式对于 index 操作的外观。

      另请参阅:http://guides.rubyonrails.org/layouts_and_rendering.html

      和:http://guides.rubyonrails.org/(在视图下)

      【讨论】:

        猜你喜欢
        • 2023-03-31
        • 2023-03-27
        • 2012-09-16
        • 2013-03-21
        • 2021-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-25
        相关资源
        最近更新 更多