2017-04-18 119 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