2013-10-11 5 views
1

При поиске решения я нашел это на StackOverflow: Generate an HTML table from an array of hashes in Ruby.Хеши, сделанные в таблицах

Это отлично работает, но я новый программист и не могу заставить его работать с рельсами. У меня есть таблица базы данных, называемая продуктом. Каждый продукт имеет поле, называемое данными, которое хранит хэш. Этот хэш выглядит следующим образом:

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

Я использую HAML, и мой взгляд прямо сейчас выглядит следующим образом: (это просто распечатав хэш):

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

Так что теперь, я хочу, чтобы иметь ключи (например, тип и цена) должны находиться в заголовке таблицы как «s», а значения каждого продукта - «с». Но я также хочу иметь «статические» столбцы, которые не генерируются из хэша, например, имя продукта. Вот картинка:

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.

Преимущество подхода в статье состоит в том, что он гибкий в отношении того, какие ключи используются в хэшах (хэшах), например. у вас гибкая «схема». В зависимости от ваших входных данных отформатированная таблица HTML может содержать разные столбцы.

С другой стороны, в приложении Rails обычно имеется базовая база данных с фиксированной схемой, например. атрибуты (ключи) хорошо известны заранее и определены в ваших миграциях и указаны в вашей модели. Поскольку атрибуты фиксированы, форма HTML или HAML является фиксированной, а не переменной, как в первом случае, и форма может быть предоставлена ​​только как файл шаблона.

Именно поэтому у вас есть мнение в Rails под app/views/your-model-name/

Пример из @ Рельсы-парень показывает, как такая определённая форма для вашей модели продукта будет выглядеть для действия индекса.

Смотрите также: http://guides.rubyonrails.org/layouts_and_rendering.html

и: http://guides.rubyonrails.org/ (по количеству просмотров)

Смежные вопросы