
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 ☺
- Mostbet guncel giris: en guncel bahis secenekleri - May 8, 2025
- Mostbet Casino: Your Oasis of Gaming Pleasure, Always - May 6, 2025
- Bahis ve emsallar Most Bet ile - May 6, 2025
- Mostbet Resmi Sitesi: Bahis Severlerin Tercihi - May 3, 2025
- MostBet Rehberi: Bahis Dunyasinda Basariya Ulasmanin Yollari - May 2, 2025
- Basarili Bir Bahis Deneyimi Icin Ipuclari Most bet Platformunda - April 30, 2025
- Mostbet Giris 2025: Bahis Stratejileri ve Taktikler - April 28, 2025
- Bahis Dunyasinda Guvende Kalmanin Yollari Mostbet ile - April 25, 2025
- Mostbet yeni giris adresi olarak sadece internet sitesi - April 23, 2025
- Bahis Dunyasinda MostBet ile Guvenli Adimlar Atin - April 22, 2025