Der Titel mag verwirrend scheinen, aber schlecht erklären, was ich implementieren möchte.Filterliste Ergebnisse mit einem primären Filter "mit Multi" und einem sekundären Filter "nur eine"
Was ich will: ich ein conatainer-list
will, die alle „Kategorien“ in dem agreement
Modell writing_type
, so dass jede Vereinbarung eine writing_type durch Zeichenfolge mit dem Namen enthält. Diese container-list
wird natürlich mehrere verschiedene writing_types
haben. Standardmäßig werden alle Schreibtypen angezeigt. Wenn Sie ein oder mehrere writing_type
's auswählen, wird die Liste die Ergebnisse nach writing_type
filtern.
Zum Beispiel
geladen Seite und die Liste enthält alle Schreiben Typen und alle Zeilen in DESC.
Container-Liste, die die folgenden Schreibtypen "Onclick Highlights ausgewählt writing_type blau, können mehrere auswählen oder abwählen" hat
writing_types: {
college_essay
,college app
,foreign language
}ich wählen
college_essay
undforeign language
Ergebnisse kommen nur mit dem College-Aufsatz und der Fremdsprache
herausnächstes klicken i die Schaltfläche namens Filter durch duedate
noch die Ergebnisse
college_essay
enthalten undforeign_language
und wird von duedate DESC filtern.wird es viele verschiedene Buttons werden neben
due_date
wiecreate_at
oderprice
jedoch nur eine dieser sekundären Filter zu einem Zeitpunkt ausgewählt werden können
-Jetzt direkt neben dem Drop-Down-Tasten für die Sekundär sind Filter
Momentan ist dies der Code, den ich gerade jetzt mit einem Drop-Down habe, aber sie filtern alle einzeln. Ich bin nicht sicher, wie man die writing_type
zuerst und dann durch Klicken auf eine der Tasten wie created_at
zu filtern.
<!-- filters for the categories -->
<div class="row text-center" style="margin:0;padding-bottom:10px;">
<div class="center" style="margin-left:18px;">
<div style="float:left;">
<%= link_to "Title", title_agreements_path, class: "link btn categories-button" %>
</div>
<!-- drop down with the writing types listed -->
<div class="agreements dropdown" style="float:left;margin-top:40px;">
<%= link_to '#', class:'btn categories-button dropdown-toggle', role:'button', style: 'text-decoration:none', 'aria-expanded' =>'false', data:{toggle: 'dropdown'} do %>
Writing Type
<span class="caret"></span>
<% end %>
<ul class="dropdown-menu" style="">
<h>Choose a Writing Type:</h>
<li><%= link_to "College Applications", collegeapplication_agreements_path, class: "link btn categories-button" %></li>
<li><%= link_to "College Essays", collegeessay_agreements_path, class: "link btn categories-button" %></li>
<li><%= link_to "Business Papers", businesspaper_agreements_path, class: "link btn categories-button" %></li>
<li><%= link_to "Resumes", resume_agreements_path, class: "link btn categories-button" %></li>
<li><%= link_to "Scholarship Essays", scholarshipessay_agreements_path, class: "link btn categories-button" %></li>
<li><%= link_to "High-School Essays", highschoolessay_agreements_path, class: "link btn categories-button" %></li>
<li><%= link_to "Language Translation", languagetranslation_agreements_path, class: "link btn categories-button" %></li>
</ul>
</div>
<div style="float:left;">
<%= link_to "Recent", recent_agreements_path, class: "link btn categories-button" %>
</div>
<div style="float:left;margin-top:40px;">
<%= link_to "Oldest", oldest_agreements_path, class: "link btn categories-button" %>
</div>
<div style="float:left;">
<%= link_to "Close Duedate", recentduedate_agreements_path, class: "link btn categories-button" %>
</div>
<div style="float:left;margin-top:40px;">
<%= link_to "Further Duedate", oldestduedate_agreements_path, class: "link btn categories-button" %>
</div>
<div style="float:left;">
<%= link_to "Lowest Price", lowestprice_agreements_path, class: "link btn categories-button" %>
</div>
<div style="float:left;margin-top:40px;">
<%= link_to "Highest Price", highestprice_agreements_path, class: "link btn categories-button" %>
</div>
</div>
</div>
routes.rb
resources :agreements, path: "agreement" do
collection do
get :recent
get :oldest
get :recentduedate
get :oldestduedate
get :collegeapplication
get :collegeessay
get :businesspaper
get :resume
get :scholarshipessay
get :highschoolessay
get :languagetranslation
get :title
get :lowestprice
get :highestprice
end
end
Vereinbarung.rb Modell
scope :recent, ->{ order("created_at DESC") }
scope :oldest, ->{ order("created_at ASC") }
scope :recentduedate, ->{ order("due_date DESC") }
scope :oldestduedate, ->{ order("due_date ASC") }
scope :lowestprice, ->{ order("current_price ASC") }
scope :highestprice, ->{ order("current_price DESC") }
scope :collegeapplication, ->{ where("writing_type = ?", "College Applications") }
scope :collegeessay, ->{ where("writing_type = ?", "College Essays") }
scope :businesspaper, ->{ where("writing_type = ?", "Business Papers") }
scope :resume, ->{ where("writing_type = ?", "Resumes") }
scope :scholarshipessay, ->{ where("writing_type = ?", "Scholarship Essays") }
scope :highschoolessay, ->{ where("writing_type = ?", "High-School Essays") }
scope :languagetranslation, ->{ where("writing_type = ?", "Language Translation") }
scope :title, ->{ order("title DESC") }
def index
@agreements = Agreement.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
end
def recent
@agreements = Agreement.recent.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def oldest
@agreements = Agreement.oldest.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def recentduedate
@agreements = Agreement.recentduedate.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def oldestduedate
@agreements = Agreement.oldestduedate.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def collegeessay
@agreements = Agreement.collegeessay.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def resume
@agreements = Agreement.resume.where("accepted = ?", false).paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def languagetranslation
@agreements = Agreement.languagetranslation.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def collegeapplication
@agreements = Agreement.collegeapplication.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def businesspaper
@agreements = Agreement.businesspaper.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def scholarshipessay
@agreements = Agreement.scholarshipessay.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def highschoolessay
@agreements = Agreement.highschoolessay.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def title
@agreements = Agreement.title.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def lowestprice
@agreements = Agreement.lowestprice.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
def highestprice
@agreements = Agreement.highestprice.where("accepted = ?", false).all.paginate(:page => params[:page], :per_page => 20)
render action: :index
end
Bisher habe ich das gemacht und es funktioniert alles einzeln, aber ich möchte, dass die Filterergebnisse auf der Grundlage, was writing_type
als primäres Ergebnis ausgewählt wird. Vielen Dank!!!
Das alles macht für mich Sinn, danke! Ich werde implementieren, wenn ich zurückkomme, um sicherzustellen, dass es funktioniert! –