Una pregunta que se repite harto en el curso de En1mes es cómo hacer un buscador con ruby on rails, aquí la respuesta:
Paso 1: Para entender como funciona vamos a hacer un pequeño ejercicio, creemos un proyecto nuevo y llamemoslo buscador.
Paso 2: Creemos un scaffold de un recurso, digamos que estamos haciendo un buscador para un blog, donde el recurso principal son los posts, así que ejecutemos la línea:
rails g scaffold post titulo:string contenido:text
Paso 3: Hay que entender el paso de parámetros en rails, estas pueden ser pasadas por get (a través de la url) o por Post a través de algún formulario o dentro de la sesión, en este caso vamos a trabajar con el método get.
En google cuando nosotros buscamos algo podemos ver que el valor que buscamos también aparece en la URL acompañado de un q=
Ruby on Rails nos permite hacer exactamente lo mismo, capturar los valores que vienen de la URL ocupando un diccionario llamado params que captura todos los valores que vienen en la URL (entre otras cosas), por ejemplo si nosotros quisiéramos capturar el mismo valor lo podemos hacer desde el controller de post, en el método index
def index @q = params[:q] @posts = Post.all end
Paso 4: Una vez que tenemos capturado el valor lo podemos mostrar en la vista de index de los posts.
<%= @q %>
Paso 5: El formulario
No podemos esperar que el usuario escribe el query a buscar en la URL, lo lógico es que haya un formulario de buscar, lo podríamos hacer con los helpers de Rails pero para mantener la simplicidad del tutorial lo vamos a hacer estilo html.
El formulario consiste simplemente en una etiqueta form y un input y un botón de envío (opcional) que vamos a poner en la vista index de los posts.
<form> <input name=”q” <%= @q %> > <button type=”submit”>Buscar</button> </form>
Paso 6: Filtrar los resultados
Lo único importante que está faltando es filtrar los resultados de los posts en base a la búsqueda, para eso tenemos que volver al controller de los posts y editar el método index.
def index @q = params[:q] if @q @posts = Post.where(:titulo => @q) else @posts = Post.all end end
Si quieren que continúe el post agregando cosas sobre como hacer match parciales y mejorando la búsqueda pueden presionarme por Twitter @gsanchezd ☺
- Pin Up Casino Oyna Türkiye, Pinup’un Resmi Web Sites - April 3, 2024
- All The Classic Pinup Positions For Vintage Elegance Photoshoot - April 3, 2024
- وان إكس بت ويكيبيدي - April 3, 2024
- ️ أفضل مواقع المراهنات الرياضية احصل على أفضل مكافآت الترحي - April 3, 2024
- ️ أفضل مواقع المراهنات الرياضية احصل على أفضل مكافآت الترحي - April 3, 2024
- 1win Bahis Şirketinin Resmi Web Sitesi 1win 2023 Online Spor Bahisleri, 1win Bahis Şirketine Giriş Yapın - April 3, 2024
- “المراهنات الرياضية أونلاين 1xbet ᐉ شركة المراهنات 1xbet تسجيل الدخول ᐉ 1xbet Co - April 2, 2024
- Pin Upward Casino Giriş, Üyelik, İndirme, Promosyonla - March 31, 2024
- Pin Up On Line Casino Türkiye Giriş Yapın Ve 0 Bonus Kazanı - March 31, 2024
- تنزيل 1xbet => جميع إصدارات 1xbet Sixth Is V 1116560 تطبيقات المراهنات + مكافأة مجاني - March 31, 2024