2016-07-22 17 views
0

Ich habe ein Problem beim Festlegen eines Platzhalters innerhalb des Dropdown-Auswahlformulars mithilfe des selects_tag-Helpers von rails. Mit Hilfe der Option prompt ein Platzhalter vorhanden, aber diese Methode erzeugt einen toten doppelten Wert in der Dropdown-Liste, die Sie nicht klicken:Probleme mit der Dropdown-Liste select_tag placeholder mit der Eingabeaufforderung

duplicate_dropdown

Hier ist mein Code:

@posts = Post.all 
@categories = Post.uniq.pluck(:category) 
@prompt = "Select Category" 

if params[:category] 
    @posts = Post.where(category: params[:category]) 
    @prompt = params[:category] 
end 

<%= form_tag(h_path, :method => "get") do %> 
    <%= select_tag 'category', options_for_select(@categories), {onchange: "this.form.submit();", prompt: @prompt} %> 
<% end %> 

Irgendwelche Ideen oder Vorschläge, wie ein Platzhalterwert in diesem Zusammenhang gut funktioniert, würden sehr geschätzt. Mit schön meine ich etwas wie die Kategorie Dropdown-Beispiel auf dieser Seite wählen: http://www.joeabercrombie.com/category/audiobooks/

Antwort

0

Was Sie brauchen, ist keine Aufforderung. Aufforderung ist eine Nachricht an den Benutzer, um zu zeigen, was dieses Dropdown bedeutet. Im Dropdown-Menü Ihrer Audible-Seite wählen Sie in der Dropdown-Liste "Kategorie auswählen" die Eingabeaufforderung aus.

Sie müssen eine ausgewählte Option festlegen. Sie möchten eine Option aus den vorhandenen Auswahloptionen auswählen, wenn params[:category] festgelegt ist. Benennen Sie in diesem Fall Ihre Variablen um und übergeben Sie die Option "zur Auswahl" an options_for_select von select_tag helper.

@posts = Post.all 
@categories = Post.uniq.pluck(:category) 
@prompt = "Select Category" 

if params[:category] 
    @posts = Post.where(category: params[:category]) 
    @selected_category = params[:category] 
end 

<%= form_tag(h_path, :method => "get") do %> 
    <%= select_tag 'category', options_for_select(@categories, @selected_category), {onchange: "this.form.submit();", prompt: @prompt} %> 
<% end %> 

Referenz: select_tag (ActionView::Helpers::FormTagHelper) - APIdock

0

Sie direkt params[:category] wie bereits ausgewählten Wert select_tag

Und auch bewegen uniq bis zum Ende line:2

@posts = Post.all 
@categories = Post.pluck(:category).uniq 

if params[:category] 
    @posts = Post.where(category: params[:category]) 
end 

<%= form_tag(h_path, method: :get) do %> 
    <%= select_tag :category, options_for_select(@categories, params[:category]), onchange: "this.form.submit();", prompt: "Select Category" %> 
<% end %> 
passieren kann