Draggable table: drupal_render, render, both yield an empty string for "#weight" types? I am attempting to implement a draggable table in a Drupal 7 module. Whenever I invoke either render() or drupal_render on my element of type #weight, an empty string is returned. The table does render and I am able to drag the rows, but cannot see the weights. I cannot figure out what I am doing wrong: I've explored some core Drupal components that follow the same pattern (of invoking drupal_render on a #weight type element) and nothing is jumping out at me. 

My form begins here:

$table_header = array_map(t, array('Order', 'Item', 'Manage'));
$form['table'] = array(
    '#theme' =&gt; 'mymodule_kw_table',
    '#header' =&gt; $table_header,
    '#rows' =&gt; $my_rows // array(string)
);


hook_theme() is implemented as such:

function mymodule_theme()
{
    return array(
        'mymodule_kw_table' =&gt; array(
            'render element' =&gt; 'form',
            'function' =&gt; 'mymodule_table'
        )
    );
}


Finally, mymodule_table() looks like this:

function mymodule_table($variables)
{
    $table_data = $variables['form'];
    $table_id = uniqid('tb');

    $rows = $table_data['#rows'];

    for ($i=0; $i &lt; count($rows); ++$i) {
        $weight = array(
            '#type' =&gt; 'weight',
            '#title' =&gt; t('Order'),
            '#default_value' =&gt; $i,
            '#delta' =&gt; 1,
            '#attributes' =&gt; array('class' =&gt; array($table_id . '-weight'))
        );

        $rows[$i] = array(
            'data' =&gt; array_map(render, array($weight, $rows[$i], 'abcd placeholder')),
            'class' =&gt; array('draggable')
        );
    }

    $table = theme('table', array(
        'header' =&gt; array_map(t, array('Order', 'Item', 'Manage')),
        'rows' =&gt; $rows,
        'attributes' =&gt; array('id' =&gt; $table_id)
    ));

    $table .= drupal_render_children($table_data);

    drupal_add_tabledrag($table_id, 'order', 'sibling', $table_id . '-weight');

    return $table;
}
Weight objects can be rendered with form_process_weight()

    $weight = array(
        '#type' =&gt; 'weight',
        '#title' =&gt; t('Order'),
        '#default_value' =&gt; $i,
        '#delta' =&gt; 1,
        '#attributes' =&gt; array('class' =&gt; array($table_id . '-weight'))
    );

    $weight = form_process_weight($weight);