2012-04-07 45 views
0

3应用程序,还有一个select_tag平变化事件,该事件发送AJAX请求:其中,goAjaxjs.erb被称为仅在第一次在我导轨

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

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一个标签,所以代码运行第二次,它无法找到与cartoes ID的div。你可能想使用.html代替.replaceWith,让标签成为div的内容,而不是完全取代它:

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

感谢迪伦......解决了这个问题! – thaleshcv 2012-04-09 18:43:48

相关问题