如何在Rails中创建动态布局列

时间:2013-04-28 02:26:20

标签: php ruby-on-rails dom

我可以在PHP中创建它,但在rails中同样的东西不起作用:

<div class="col">
    <div class="row">content 1 here</div>
    <div class="row">content 2 here</div>
</div>
<div class="col">
    <div class="row">content 3 here</div>
</div>

这些都是动态的,所以每当数据库中的col字段发生变化时,我都会尝试生成新列。因此,内容1的col为1,内容为2,col = 1,内容3为col = 2.内容四处移动,因此我将通过ajax更新数据库中的列号。问题是如何加载所有内容框和右列。在Rails中执行此操作的最佳做​​法是什么?这是我在PHP中做的(伪代码)

<?php
    // this will be content from database
    $content = $dbdata;
    // start first column
    echo '<div class="col">';
    foreach($content as $thiscontent){
        // output row divs with content
        echo '<div class="row">'.$thiscontent['body'].'</div>';
        if($lastcol == $thiscontent['col']){
             // end col and create new col div
             echo '</div><div class="col">';
        }
        $lastcol = $thiscontent['col'];
    }
    // ends last column
    echo '</div>';
?>

我可能只是一个菜鸟并以错误的方式解决这个问题,所以请随时教我如何做到这一点。我的数据库不是确定色号的方法吗? rails对迭代的处理方式与我怀疑的不同吗?

1 个答案:

答案 0 :(得分:1)

在rails中你可以尝试这样做。将它放在视图文件中:

    // start first column
    <div class="col">
    <% @dbdata.each do |thiscontent| %>
      // output row divs with content
      <div class="row"><%= thiscontent.body %></div>
      <% if !lastcol.nil? and lastcol == thiscontent.col %>
        // end col and create new col div
        </div><div class="col">
      <% end
      lastcol = thiscontent.col
    end %>
    // ends last column
  </div>

请注意,您应该将@dbdata传递给控制器​​中的视图