Ich versuche, ein einfaches Suchformular in Rails zu erstellen, aber ich denke, dass ich etwas vermisse.Verwenden von benannten Routen mit Parametern und form_tag
Ich habe eine benannte Route für die Suche:
map.search ":first_name/:last_name", :controller => "home", :action => "search"
Ich versuche, dass in meiner Suchformular zu verwenden:
<% form_tag(search_path, :method => 'get') do %>
<%= text_field_tag(:first_name) %>
<%= text_field_tag(:last_name) %>
<%= submit_tag("Search") %>
<% end %>
Aber als ich das Suchformular laden erhalte ich eine Action :: RoutingError:
Was vermisse ich? Ich dachte, die in meinem Formular definierten Felder würden automatisch mit meinen Routenparametern verknüpft. : -/
Update:
Ich verstehe, dass search_path erzeugt wird, bevor das Formular nun angezeigt wird, so kann es nicht aktualisiert werden. Im Nachhinein offensichtlich!
änderte ich meine Routen:
map.search 'search', :controller => "home", :action => "search"
map.name ':first_name/:last_name', :controller => "home", :action => "name"
Und nun die search
Aktion gerade tut:
def search
redirect_to name_path(params)
end
Alles eine Behandlung funktioniert! Das Hauptziel hier war, diese URL von der namens genannten Route als Ergebnis einer Suche zu bekommen. Danke Leute!
Ich habe es gerade mit Ihrer Option # 2 - Ich habe eine andere Route und eine andere Aktion erstellt. Vielen Dank! –
Wahrscheinlich wäre es besser, beides zu tun. Also mach es 2. als Standard und wenn js funktioniert dann ändere 'action' mit js - so kann es ohne Umleiten funktionieren. – klew