2013-04-28 2 views
0

я могу создать это в 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 есть столбец 1, контент 2, col = 1, контент 3 имеет col = 2. Содержимое перемещается, поэтому я буду обновлять номер столбца в базе данных через ajax. Проблема заключается в том, как загрузить все поля содержимого и в нужные столбцы. Какова наилучшая практика для этого в Rails? Вот то, что я хотел бы сделать в PHP (psuedocode)

<?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>'; 
?> 

Я мог бы быть просто нуб и буду об этом неправильный путь, так что не стесняйтесь, чтобы обучить меня о том, как это должно быть сделано. Является ли моя база данных не способ определить номер столбца? Разве рельсы обрабатывают итерацию иначе, чем я подозреваю?

ответ

1

В рельсах вы можете попробовать сделать это. Поместите его в файл представления:

// 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 на вид из контроллера

+0

Это в конечном итоге работает, но мне пришлось изменить lastcol к @lastcol. Огромное спасибо. – rncrtr

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