哈希显示相应的键和值

时间:2013-10-11 02:44:20

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个看起来像这样的哈希:

{"Title"=>"Harry Potter", "Author"=>"Jk rowling", "Date Published"=>"1997"}

当一切正常时,这是html表:

enter image description here

现在,我只是迭代了th的键和td的值。

所以这是我的代码:

%table
  %tr
    - data.each do |key, array|
        %th= key

  %tr
    - data.each do |key, array|
        %td= array

这有效,但我的问题是:

  • 如果值为空,则不会将相应的键留在相应的键下面,而是将下一个值放在那里。因此,如果作者的值留空,那么1997将转移到表格中的作者之下。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

可能是nil而不会生成thtd。你可以试试这个(注意,我并不完全熟悉你正在使用的视图宝石,所以我正在尝试它):

%table
  %tr
    - data.each do |key, array|
        %th= key || " ".html_safe

  %tr
    - data.each do |key, array|
        %td= array || " ".html_safe

答案 1 :(得分:1)

我会更喜欢这样做:

%table
  %tr
    - data.keys do |key|
        %th= key || ' '

  %tr
    - data.values do |val|
        %td= val || '<missing>'

使用keysvalues以相同的顺序返回键及其各自的值,因此您的标题和数据将匹配。如果缺少某个密钥,&nbsp;将有助于该列显示。如果缺少值&lt;missing&gt;,则应显示<missing>

如果没有样本数据和代码中的工作示例,很难在不花费大量时间拼凑虚假数据,视图等的情况下显示更多内容。