Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Search Forms Ruby: Реальный Rails

Программа урока

  • Создание поисковых форм с Ransack
  • Предикаты Ransack
  • Сортирующие ссылки
  • Интеграция Ransack с SimpleForm
  • Интеграция Ransack с I18n
require_relative 'boot'

# В config/application.rb добавляем работу с SimpleForm
ENV['RANSACK_FORM_BUILDER'] = '::SimpleForm::FormBuilder'

require 'rails/all'

class PeopleController < ApplicationController
  def index
    @q = Person.ransack(params[:q])
    @people = @q.result
  end
end

# Можем использовать хелпер формы. Однако этот хелпер не может подтягивать стили Bootstrap, поэтому классы и лейблы нужно писать самим
# Если в конфиге подключен Simpleform для ransack, используем его
= search_form_for @q do |f|
  .row.my-2
    .col-5
    # Можем отключить показ лейблов
    # Ransack ищет по полям в БД
    # Для фильтров необходимо использовать определенные имена. Например, Если поле "содержит" текст, то имя инпута формы - column_cont
      https://github.com/activerecord-hackery/ransack#search-matchers
      = f.input :name_cont, label: false
    .col-4
      # Для вывода списка состояний можно выполнить map() на списке состояний.
      = f.input :aasm_state_eq, as: :select, collection: Post.aasm.states.map(&:name), label: false
    .col-3
      = f.submit 'Search', class: 'btn btn-primary me-2'
      = link_to 'Reset', url_for, class: 'btn btn-outline-primary'
class User < ApplicationRecord
  include AASM

  validates :name, presence: true

  def self.ransackable_attributes(_auth_object = nil)
    %w[name]
  end
end

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 5 840 ₽ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 25 апреля

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу