【问题标题】:Creating a table in HTML with Ruby?使用 Ruby 在 HTML 中创建表格?
【发布时间】:2012-07-25 22:24:54
【问题描述】:

我正在尝试制作一个表格,每行包含十个值,从 1 开始到 100。

我的 Ruby 代码如下所示:

<table border="1">

  <% (1..100).each do |i| 
    d3 = (i % 3 == 0) 
    d5 = (i % 5 == 0)

    i = "<b>#{i}</b>" if d5
    i = "<i>#{i}</i>" if d3 %>

    <tr>
      <td><%= i %></td>
    </tr>

  <% end %>
</table>

如何将其放入 10 X 10 的 HTML 表格中?

【问题讨论】:

  • FWIW,我不喜欢在块中重新分配迭代器变量;我觉得这很令人困惑。
  • @DaveNewton 这确实让我很困惑——我在回答中犯了(并修复了)两个不同的错误。

标签: ruby-on-rails ruby erb


【解决方案1】:

使用 ERB:

<table>
<%10.times do |row|%>
  <tr>
    <%10.times do |col|%>
      <td><%=
        i = row*10+col+1
        if i%5==0
          "<b>#{i}</b>"
        elsif i%3==0
          "<i>#{i}</i>"
        else
          i
        end
      %></td>
    <%end%>
  </tr>
<%end%>
</table>

使用 Haml:

%table
  - 10.times do |row|
    %tr
      - 10.times do |col|
        %td
          - i = row*10+col+1
          = i%5==0 ? "<b>#{i}</b>" : i%3==0 ? "<i>#{i}</i>" : i

【讨论】:

  • 我可能会在 ERB(三元)中做同样的事情。
  • @Dave 好吧,是的,我不想让可怜的初学者大吃一惊:)
  • 你是一个善良仁慈的Phrogz。
  • 谢谢,我只希望这不会超出我的想象。哦,好吧,也许我会在几周内明白它
  • 如果您想不通,只需在 Google 上搜索让您感到困惑的 ruby​​ 主题即可。您可能还不了解的唯一内容是三元运算符和模运算符。你应该只需要几分钟就能理解它。
【解决方案2】:
<table border="1">

<% (1..100).each do |i| 
   d3 = (i % 3 == 0) 
   d5 = (i % 5 == 0)

   s = "#{i}"
   s = "<b>#{i}</b>" if d5
   s = "<i>#{i}</i>" if d3 %>

  <% if i % 10 == 1 %><tr><% end %>
    <td><%= s %></td>
  <% if i % 10 == 0 %></tr><% end %>

<% end %>
</table>

基本上,您希望在元素 1、11、21 等之前开始一个表格行,并在元素 10、20、30 等之后结束一行。

【讨论】:

  • +1 用于使用 OP 的原始 1-100 循环,即使这种 ERB 手动标记生成正是我现在更喜欢 Haml 的原因。
  • @Phrogz 谢谢!是的,如果我自己做,我更喜欢你的任何一个解决方案。正如您所说,不想“打击可怜的初学者的想法”,我通常更喜欢更正他们的代码而不是重写它。我很高兴你展示了一些更惯用和优雅的风格。
  • @user102825 不客气。玩得开心,欢迎来到 Stack Overflow!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 2018-08-23
  • 2011-07-12
  • 2013-03-06
  • 2011-05-15
相关资源
最近更新 更多