Estoy intentando crear un formulario de búsqueda simple en Rails, pero creo que me falta algo.Usar rutas con nombre con parámetros y form_tag
que tienen una ruta de llamada para la búsqueda:
map.search ":first_name/:last_name", :controller => "home", :action => "search"
Estoy tratando de utilizar que en mi formulario de búsqueda:
<% form_tag(search_path, :method => 'get') do %>
<%= text_field_tag(:first_name) %>
<%= text_field_tag(:last_name) %>
<%= submit_tag("Search") %>
<% end %>
Pero cuando me carga el formulario de búsqueda Puedo obtener una ActionController :: RoutingError:
search_url failed to generate from {:action=>"search", :controller=>"home"} - you may have ambiguous routes, or you may need to supply additional parameters for this route. content_url has the following required parameters: [:first_name, :last_name] - are they all satisfied?
¿Qué me falta? Pensé que los campos definidos en mi formulario se vincularían automáticamente con mis parámetros de ruta. : -/
Actualización:
entiendo que se genera search_path antes de que aparezca el formulario ahora, por lo que no se puede actualizar. ¡Obvio en retrospectiva!
he cambiado de rutas:
map.search 'search', :controller => "home", :action => "search"
map.name ':first_name/:last_name', :controller => "home", :action => "name"
Y ahora la acción search
sólo hace:
def search
redirect_to name_path(params)
end
funciona todo un lujo! El objetivo principal aquí era obtener esa URL del nombre ruta nombrada como resultado de hacer una búsqueda. ¡Gracias chicos!
Acabo de hacerlo funcionar con su opción n. ° 2: creé otra ruta y otra acción. ¡Gracias! –
Probablemente sería mejor hacerlo en ambos sentidos. Así que haz 2. way en el modo predeterminado y si js está funcionando, entonces cambia 'action' con js para que pueda funcionar sin redireccionar. – klew