2012-04-07 3 views
0

в моих рельсах 3 приложений, есть select_tag с OnChange события, которое посылает запрос Ajax:js.erb вызываются только в первый раз

f.select 'forma_id', @collection, {:include_blank => true}, {:onchange => "goAjax('/lancamentos/receber_forma', this.value)", :class => 'btn'} 

где goAjax является :

function goAjax(_url, _value) { 
    $.ajax({url: _url, data: 'value=' + _value, dataType: 'script'}) 
} 

lancamentos_controller # receber_forma это (упрощенная версия):

def receber_forma 
    @lancamento = Lancamento.new(:forma_id => params[:value]) 
    logger.info 'forma_id = ' + @lancamento.forma_id 
    respond_to do |format| 
    format.html { render :new } 
    format.js 
    end 
end 

и receber_forma.js.erb:

$('div#cartoes').replaceWith("<%= escape_javascript(label_tag(@lancamento.forma_id)) %>"); 

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

Кто-то знает, что я делаю неправильно здесь?

p.s.:sorry любые ошибки английского

ответ

1

Вы полностью заменить ваш div#cartoes с этикеткой, поэтому во второй раз код работает, он не может найти div с cartoes идентификатором. Вы, вероятно, хотите использовать .html вместо .replaceWith, так что метка становится содержание div, а не заменить его полностью:

$('div#cartoes').html("<%= escape_javascript(label_tag(@lancamento.forma_id)) %>"); 
+0

благодаря Дилан ... решил проблему !!! – thaleshcv

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