2017-04-18 112 views
0

我正在使用涉及两个表的查询来显示视图中的记录,当修改该记录时,我通过向表单添加“Remote True”并添加到表单中来使用ajax在控制器中编辑动作“format.Json”并创建一个update.js.erb文件,在该文件中,我在更新显示更新视图后渲染注册表。我的问题是,记录是查询的结果,并且在视图中使用ajax呈现它时,它不会执行查询的结果。使用ajax显示查询结果

用ajax怎么可以呈现查询结果?

我的索引行动:

@search_liberados = Pedidoliberado.proceso_pedidos_lib.search(search_params) 

@search_liberados.sorts = 'Pza desc' if @search_liberados.sorts.empty? 
@pedidosliberados = @search_liberados.result().page(params[:pedidosliberados]).per(15) 

这是我的看法

<tbody id="container_pedidosliberados"> 
      <%= render @pedidosliberados %><!--carga todos los productos--> 
    </tbody> 

我的部分_pedidoliberado:

<tr id="pedidoliberado_<%= pedidoliberado.id %>"> 
    <td class="component_name_body_col"><%=pedidoliberado.TOTAL%></td> 
    <td class="component_name_body_col"> 
    <%= form_for(pedidoliberado, :method => :put, remote: true, :url => {:controller =>'pedidosliberados', :action => 'update', :id => pedidoliberado.ID}, html: {class: "form-horizontal "}) do |f| %><!--ajax--> 

     <%= f.hidden_field :STATUS %> 

     <%= submit_tag "save", class: "btn btn-primary Entregar", data: { disable_with: 'Actualizando' }%> 

    <% end %> 
    </td> 
</tr> 

我的查询:

def self.proceso_pedidos_lib 
    query = select("[pedidosliberados].PEDIDO AS Pedido, SUM([detalle].IMPORTE) AS IMPORTE, SUM([detalle].IVA) AS IVA, SUM([detalle].IMPORTE) + SUM([detalle].IVA) AS TOTAL") 
      .joins('inner join detalle ON pedidosliberados.PEDIDO = detalle.PEDIDO ') 
    query 
    end 

我的编辑操作:

def update 
    respond_to do |format| 
     if @pedidoliberado.update(pedidoliberado_params) 
     format.html { redirect_to @pedidoliberado, notice: 'Pedidoliberado was successfully updated.' } 
     format.json { render :show, status: :ok, location: @pedidoliberado } 
     format.js {flash.now[:notice] = 'saved.'} #ajax 
     else 
     format.html { render :edit } 
     format.json { render json: @pedidoliberado.errors, status: :unprocessable_entity } 
     format.js {flash.now[:alert] = 'Error.'} #ajax 
     end 
    end 
    end 

我update.js.erb:

$("#pedidoliberado_<%= @pedidoliberado.id %>").fadeOut(500, function(){ 
    $(this).remove(); 
    $("#container_pedidosliberados").prepend('<%= j render @pedidoliberado %>'); 

}); 
$("#notice").html("<%= escape_javascript(render :partial => 'partials/flash' , :locals => { :flash => flash }).html_safe %>"); 

setTimeout(function(){ 
    $('#notice').fadeIn("slow", function() { 
    $(this).create(); 
    }) 
}, 1500); 
+0

您是否尝试删除编辑操作中的format.html行? –

+0

@VineethSubbaraya谢谢你的回答,是的,我做过了,但它仍然显示没有查询结果的记录 – luis31

+0

你能解释一下索引操作中搜索功能的作用吗?你的意思是把它放在那里? –

回答

0

您没有运行在你的更新操作查询。查询的参数将不可用,除非您在更新操作中运行它。你也有写,这将无法使用实例(单个记录)的一类方法

def self.proceso_pedidos_lib 
    query = select("[pedidosliberados].PEDIDO AS Pedido, SUM([detalle].IMPORTE) AS IMPORTE, SUM([detalle].IVA) AS IVA, SUM([detalle].IMPORTE) + SUM([detalle].IVA) AS TOTAL") 
     .joins('inner join detalle ON pedidosliberados.PEDIDO = detalle.PEDIDO ') 
    query 
end 

你将不得不运行下面的命令这让加盟像IMPORTE和等领域。

@pedidoliberado.proceso_pedidos_lib 
+0

excel的查询,但该行显示查询的所有记录再次包括那些已经和没有修改,有没有什么办法只显示修改? – luis31

+0

更新后尝试运行“@ pedidoliberado.proceso_pedidos_lib”。这应该运行该特定记录的查询。 –

+0

woth that line我得到这个错误:NoMethodError(未定义的方法'proceso_pedidos_lib'为#): – luis31