我在用 fields_for 刷新部分时遇到问题。
这是部分('table_detelle')的代码
<table class="table">
<thead>
<tr>
<th><%= t('.denominacion') %></th>
<th><%= t('.cantidad_ingreso') %></th>
<th><%= t('.importe') %></th>
</tr>
</thead>
<tbody>
<%= f.fields_for :operacion_detalles do |builder| %>
<tr>
<%= render 'table_detalle_operacion', f: builder %>
</tr>
<% end unless @operacion.nil? %>
</tbody>
</table>
<%= content_tag :h3, t('.total', :value=> number_to_currency(@operacion.R_IMPORTE)).html_safe, :class => 'pull-right', style: 'display:inline' %>
当用户更改组合的值时,我想刷新上面的部分(因为详细信息对象必须更改并且是可编辑的)
这是javascript代码:
$('#operacion_TIPOVALOR_ID').change(function(){
$.ajax({
url: '<%= cambiar_tipo_valor_movimientos_path %>',
data: {tipo_valor_id: $('#operacion_TIPOVALOR_ID').val()},
complete: function(){
$('#tipo_valor_loader').css('display','none');
},
beforeSend: function(){
$('#tipo_valor_loader').css('display','inline');
},
success: null,
dataType: 'script'
});
});
控制器代码:
def cambiar_tipo_valor
@operacion = Operacion.new
denominaciones = TipoValorDenominacion.all_from_tipo_valor params[:tipo_valor_id]
denominaciones.each do |deno|
@operacion.operacion_detalles.build :tipo_valor_denominacion => deno, :I_CANTIDAD => 0, :R_IMPORTE => 0
end
end
如您所见,“operacion_detalles”会根据用户选择而变化。
.js.erb 代码:
$('#detalle').html('<%= escape_javascript(render :partial => 'table_detalle') %>');
但是,我得到:
undefined local variable or method `f' for #<#<Class:0x45ae1c8>:0x5062338>
所以,我需要 f 变量来渲染部分。有没有办法模拟 f 变量?
提前致谢。