Esto es lo que necesita:
form_tag({ :controller => :magic, :action => :search, :method => post }, { :remote => true }) do ....
Su clase de un mal diseño, pero los rieles form_tag
métodos requieren dos hash - el hash de opciones url_for, y las opciones de hash regular. Esto ha generado mucha confusión para muchos programadores de Rails. Si no agrega los límites del hash delineado, todas las opciones se pasan a url_for(), arruinando el :remote => true
.
Esto agregará data-remote="true"
a su formulario (para ser utilizado con JavaScript no intrusivo, como han mencionado otros). A partir de ahí, debe crear el AJAX apropiado para el enlace para hacer la solicitud.
Aunque en realidad debería usar una ruta con nombre como magic_search_path
en lugar de los parámetros de controlador/acción.
La respuesta correcta es separar los dos parámetros hash, pero en Rails 3 funciona con 'form_tag' y el parámetro': remote => true'. Rails 3 pretende ser discreto con el javascript generado, y la lógica para enviarlo como solicitud ajax se encuentra ahora en el lado del cliente, con el controlador de Javascript de su elección. Consulte http://railscasts.com/episodes/205-unobtrusive-javascript – Chubas