在我的 rails 3 应用程序中,有一个带有onchange事件的select_tag,它发送一个 ajax 请求:
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 方法中的记录器显示始终发送新选择的值。
有人知道我在这里做错了什么吗?
ps:如有英文错误请见谅