2017-04-18 20 views
0

私は、レコードを変更するときにビューにレコードを表示するために2つのテーブルを使用するクエリを使用しています。 "Remote True"をフォームに追加し、コントローラーで "format.Json"のアクションを編集し、更新後にレジストリーをレンダリングしてビューを更新するupdate.js.erbファイルを作成します。私の問題は、レコードがクエリの結果であり、ビューのajaxでクエリの結果を取得しないことです。ajaxを使用してクエリの記録結果を表示

ajaxを使用すると、どのようにクエリ結果を表示できますか?

私のindexアクション:

@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

あなたの更新アクションでクエリを実行していません。照会されたパラメーターは、更新アクションで実行しない限り使用できません。また、あなたはあなたがIMPORTEなどなどの分野に参加得るために、コマンドの下にこれを実行する必要があります例えば使用することはできませんクラスメソッド(個々のレコード)

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 

を書かれています。

@pedidoliberado.proceso_pedidos_lib 
+0

のクエリを使用して優秀ですが、その行は、既に持っていて変更していないものを含むクエリのすべてのレコードを再表示しています、変更するものだけを表示する方法はありますか? – luis31

+0

更新後、 "@ pedidoliberado.proceso_pedidos_lib"を実行してみてください。その特定のレコードのクエリを実行する必要があります。 –

+0

このエラーが発生しています:NoMethodError(未定義のメソッド 'proceso_pedidos_lib 'for#): – luis31

関連する問題