2016-07-17 17 views
1

Ich habe eine Rails-Anwendung und auf der Indexseite habe ich ein Dropdown-Menü, um die Anzahl der auf der Seite angezeigten Datensätze auszuwählen. Dazu habe ich auch ein Suchformular, um die Ergebnismenge zu filtern .Rails hängen Parameter an URL an, basierend auf Dropdown-Auswahl

Ich mag die Drop-Down-Auswahl an die URL

zum Beispiel anfügen wenn ich Aufzeichnungen zu suchen, wird die URL ?utf8=✓&search=as&button= aber jetzt, wenn der Benutzer die Anzahl der Datensätze zu per_page=10 angezeigt ändern (10 ist die Benutzerauswahl aus der Dropdown) die URL ?utf8=✓&search=as&button=&per_page=10

werden soll ich versucht, Code folgen, aber mit jedem Benutzer Auswahlen, hält die per_page auf die uRL hinzufügen, meine Codezeile ist

<%= select_tag :per_page, 
       options_for_select([10,20,30], 
       params[:per_page].to_i), 
       :onchange => "if(this.value){window.location+='&per_page='+this.value;}" %> 
+0

Was meinen Sie zu der URL hinzufügen? 20 + 30 + 10 .. jedes Mal, wenn der Benutzer ein Wertformular Dropdown wählt? – learner

+0

@learner 1. Mal, wenn der Benutzer 10 auswählt, ist die URL '? Utf8 = ✓ & search = as & button = & per_page = 10', jetzt wählt der Benutzer 20, die URL ist jetzt'? Utf8 = ✓ & search = as & button = & per_page = 10 & per_page = 20 'und wie weise. – HSD

+0

In diesem Code 'if (this.value) {window.location + = '& per .....', ist "+" Zeichen vor "=" erforderlich? Ich vermute, das verursacht das Problem für dich. Versuchen Sie 'if (this.value) {window.location = '& per ....'. – learner

Antwort

0

Was können Sie tun, ist die Auswahl in ein Formular-Tag und senden Sie das Formular in onchange Handler zu wickeln. Es kann in etwa wie folgt aussehen (Ich gehe davon aus, dass Sie orders_path Route zur Verfügung haben und wollen params[:search] Wert halten):

<%= form_tag orders_path, :method => "get" do %> 
    <%= hidden_field_tag :search, params[:search] %> 
    <%= select_tag :per_page, options_for_select([10,20,30], params[:per_page].to_i), :onchange => "this.form.submit()" %> 
<% end %> 
+0

habe ich mit dem form_tag versucht, aber jetzt wann Ich gebe das Formular ein, die Suchparameter sind weg. Ich möchte das Formularergebnis auf die Suchergebnisse beschränken. – HSD

+0

Sie können dem Formular 'hidden_field_tag'-Elemente hinzufügen, um die Suchparameter beizubehalten. Ich habe das Beispiel aktualisiert. – lest

+0

Vielen Dank das hidden_field_tag funktioniert :) – HSD

Verwandte Themen