2016-07-22 12 views
1

In meiner Rails 4.2 app Ich habe eine index Aktion, die alle Rechnungen des Benutzers auflistet, durch Suchparameter in der URL gefiltert:Wie übergeben Sie GET-Parameter in Ruby on Rails an die nächste Controller-Aktion?

class InvoicesController < ApplicationController 

    def index 
    @invoices = current_user.invoices.search(params) 
    respond_to do |format| 
     format.html do 
     @title = "Invoices" 
     ... 
     end 
     format.csv do 
     headers['Content-Disposition'] = "attachment; filename=\"#{invoices_filename}.csv\"" 
     end 
     format.xls do 
     headers['Content-Disposition'] = "attachment; filename=\"#{invoices_filename}.xls\"" 
     end 
    end 
    end 

    ... 

end 

Das funktioniert gut. Der Benutzer kann seine Rechnungen nach verschiedenen Parametern filtern und die aufgeführten Rechnungen entsprechend anpassen.

Die Probleme beginnen, wenn der Benutzer diese genauen Rechnungen im XLS- oder CSV-Format herunterladen möchte. Ich habe einen Link für die auf index.html.erb:

<%= link_to "Download invoices", invoices_path(:format => "xls") %> 

aber es lädt alle Rechnungen, nicht nur die, die der Benutzer vorher herausgefiltert.

Gibt es eine Möglichkeit, die Suchparameter an die nächste Aktion oder vielleicht eine elegantere Lösung alle zusammen zu übergeben?

Danke für jede Hilfe.

Antwort

4

Sie müssen nur die params senden zusammen mit dem format

Dies wird den Trick:

<%= link_to "Download invoices", invoices_path(params.merge(format: :xls)) %> 
+0

Das ist es. Vielen Dank! – Tintin81