i want pass 2 id in link_to
tag using 2 id can fetch data db.but in case showing 1 id coming url in address bar therefore getting following error.
error:
activerecord::recordnotfound in paymentscontroller#download_pdf couldn't find paymentvendor without id rails.root: c:/site/swargadwara_puri1 application trace | framework trace | full trace app/controllers/payments_controller.rb:85:in `download_pdf'
my code file has explained below.
total_payment_result.html.erb:
<table class="table table-bordered"> <colgroup> <col class="col-md-1 col-sm-1"> <col class="col-md-3 col-sm-3"> <col class="col-md-2 col-sm-2"> <col class="col-md-2 col-sm-2"> <col class="col-md-2 col-sm-2"> <col class="col-md-2 col-sm-2"> </colgroup> <thead> <tr> <th class="text-center">sl. no</th> <th class="text-center">date</th> <th class="text-center">total claim</th> <th class="text-center">paid</th> <th class="text-center">outstanding</th> <th class="text-center">payment advice</th> </tr> </thead> <tbody> <tr> <td class="text-center">1</td> <td class="text-center"><%= @add_payment.created_at %></td> <td class="text-center"><%= @add_payment.total_claim %></td> <td class="text-center"><i class="fa fa-rupee"></i><%= @add_payment.paid_amount %></td> <td class="text-center"><i class="fa fa-rupee"></i><%= @outstanding %></td> <td class="text-center"> <div class="btn-group"> <%= link_to "download pdf",download_pdf_path(:format => "pdf",:id1 => @add_payment.id,:id2 => @userid ),:target => "_blank" %> </div> <div class="btn-group"> <a href="javascript:void(0)" title="" class="btn btn-xs btn-danger"> <i class="fa fa-download"></i> </a> </div> </td> </tr> </tbody> </table>
payments_controller.rb:
class paymentscontroller < applicationcontroller def payment @payment=vendor.new @add_payment=addpayment.new respond_to |format| format.html format.js end end def check_type if params[:commit]=="submit" @vendor_type = paymentvendor.where(:v_name => params[:v_name]).map{|v|[v.v_catagory ,v.receipt_no]} #@vendor_type = paymentvendor.where(:v_name => params[:v_name]).pluck(:v_catagory) @output=[] #@result=[] @r_no=[] @vendor_type.each |i| if i.first == params[:payment][:s_catagory] @output << i[1] end end @output.each |o| @r_no << o @result = paymentvendor.where(:receipt_no => @r_no,:v_catagory => params[:payment][:s_catagory],:v_name => params[:v_name],:v_status => "no" ) end #puts "#{val} => #{index}" #puts output1[index] #@result = paymentvendor.where(:receipt_no => @output[index],:v_catagory => params[:payment][:s_catagory],:v_name => params[:v_name] ) else @v_name=vendor.where(:s_catagory => params[:payment][:s_catagory] ).pluck(:v_name) end end def add_payment if params[:commit] #params[:details] == '1' ? remember : forget @userid=params[:id] puts "id #{@userid}" @info=0 params[:infos].each |info| @info=@info+info.to_i end @total_amount=params[:deatils] @total=0 @count=0 @delet_id=[] params[:deatils].each |id| @delet_id << id @amount=paymentvendor.find(id) @total=@total+@amount.v_amount.to_i @count=@count+1 end if @total @outstanding= @info-@total if params[:add_payment][:p_catagory]=="cash" @add_payment=addpayment.create(:p_catagory => params[:add_payment][:p_catagory],:paid_amount => @total,:total_claim => @count ) if @add_payment @delet_id.each |i| @del_id=paymentvendor.find(i) @del_id.update_attributes(:v_status => "yes") end @abc=true end end if params[:add_payment][:p_catagory]=="cheque" @add_payment=addpayment.create(:p_catagory => params[:add_payment][:p_catagory],:paid_amount => @total,:total_claim => @count,:chk_details => params[:chk_details],:chk_no => params[:chk_no] ) if @add_payment @abc=true end end end else if params[:add_payment][:p_catagory]=="cheque" @chk=true else @cash=true end end end def download_pdf @pdf_payment_result=addpayment.find(params[:id1]) @pdf_vendor_details=paymentvendor.find(params[:id2]) @pdf_address=vendor.where(:v_name => @pdf_vendor_details.v_name , :s_catagory => @pdf_vendor_details.v_catagory ) pdf = render_to_string(pdf: "test.pdf", template: "payments/download_pdf.html.erb", encoding: "utf-8", layout: 'application') send_data pdf ,:disposition => 'inline', filename: 'something.pdf', :type => 'application/pdf' save_path = rails.root.join('pdfs','payment.pdf') file.open(save_path, 'wb') |file| file << pdf end end end
route.rb:
swargadwarapuri::application.routes.draw root :to => "admins#index" post "session/login_admin" => "sessions#login_admin" "homes/home" => "homes#home" "admins/index" => "admins#index" "sessions/logout_admin" => "sessions#logout_admin" post "homes/scan_report" => "homes#scan_report" "reports/view_report" => "reports#view_report" "users/create_client" => "users#create_client" post "users/client_reg" => "users#client_reg" "homes/user_home" => "homes#user_home" "vendors/vendor_add" => "vendors#vendor_add" "vendors/vendor_edit" => "vendors#vendor_edit" "payments/payment" => "payments#payment" "payments/view_payment" => "payments#view_payment" post "vendors/create_vendor" => "vendors#create_vendor" post "homes/payment" => "homes#payment" post "vendors/update_vendor" => "vendors#update_vendor" post "payments/check_type" => "payments#check_type" "payments/check_type" => "payments#check_type" post "payments/check_dropdown" => "payments#check_dropdown" "payments/paym" => "payments#paym" post "payments/add_payment" => "payments#add_payment" "payments/download_pdf" => "payments#download_pdf", :as => 'download_pdf' end
paymentdetails.html.erb:
<table class="table table-bordered"> <colgroup> <col class="col-md-1 col-sm-1"> <col class="col-md-1 col-sm-1"> <col class="col-md-3 col-sm-3"> <col class="col-md-3 col-sm-3"> <col class="col-md-4 col-sm-4"> </colgroup> <thead> <tr> <th class="text-center"><input type="checkbox"></th> <th class="text-center">sl. no</th> <th class="text-center">date</th> <th class="text-center">receipt no.</th> <th class="text-center">amount</th> </tr> </thead> <tbody> <% @result.each |r| %> <%= hidden_field_tag 'infos[]',r.v_amount %> <tr> <th class="text-center"><%= check_box_tag "deatils[]" ,r.id,{} ,:id => r.id %></th> <td class="text-center"><%= r.id %></td> <td class="text-center"><%= r.c_date %></td> <td class="text-center"><%= r.receipt_no %></td> <td class="text-center"><i class="fa fa-rupee"></i><%= r.v_amount %></td> </tr> <% end %> </tbody> </table>
actually error showing in download_pdf
method because of id2 cannot fetch.see view file passing 2 id inside link_to
tag (i.e.<%= link_to "download pdf",download_pdf_path(:format => "pdf",:id1 => @add_payment.id,:id2 => @userid ),:target => "_blank" %>
).when download_pdf
action executing getting url i.e-http://localhost:3000/payments/download_pdf.pdf?id1=12
in other window need id1 , id2 url.please me pass these 2 id query string error can resolved.
add following routes.rb
get "payments/download_pdf/:id1/:id2" => "payments#download_pdf", :as => 'download_pdf' def download_pdf @pdf_payment_result=addpayment.find(params[:id1]) @pdf_vendor_details=paymentvendor.find(params[:id2]) @pdf_address=vendor.where(:v_name => @pdf_vendor_details.v_name , :s_catagory => @pdf_vendor_details.v_catagory ) pdf = render_to_string(pdf: "test.pdf", template: "payments/download_pdf.html.erb", encoding: "utf-8", layout: 'application') file_name = "#{time.now.strftime("%d%m%y%h%m%s")}.pdf" send_data pdf ,:disposition => 'inline', filename: file_name, :type => 'application/pdf', :page_size => 'letter' save_path = rails.root.join('pdfs', file_name) file.open(save_path, 'wb') |file| file << pdf end end
this download_pdf create unique timestamp
Comments
Post a Comment