Блог на Rails у VS Code — Ransack версія 4

Hi! Давайте створимо рядок пошуку.

У цьому епізоді ми будемо працювати з **Ransack**.

pic

Ось як він працює добре:

pic

Натискаючи кнопку Пошук, ми можемо без зусиль шукати за заголовками та змістом. Його вигляд чудово інтегрується в естетику нашого блогу, покращуючи загальний досвід користувача.

Ransack Gem — це чудовий інструмент для швидкої реалізації функціональності пошуку та сортування в додатках.

Ransack спрощує процес реалізації функціональності пошуку в Rails-додатках, надаючи чистий і інтуїтивно зрозумілий інтерфейс для побудови пошукових запитів та обробки результатів пошуку. Це широко використовуваний інструмент у Rails-проектах для додавання потужних можливостей пошуку з мінімальними зусиллями.

Ласкаво просимо на борт!

У цьому пості (з посиланням на Deanin):

Ви дізнаєтесь:  

Як використовувати Ransack версії 4.1;

Почнемо!

Примітка: якщо ви застрягли, перегляньте мій репозиторій.

Щоб інтегрувати Ransack у вашому Rails 7 вебсайті, дотримуйтесь таких загальних кроків:

0#крок — Завантажте останню версію (v8) поста тут і підготуйте середовище vscode.

Давайте відкриємо нову гілку функцій: git checkout -b add_ransack .

1#крок — Встановіть гем Ransack: Додайте гем Ransack до вашого Gemfile:

bundle add ransack -v 4.1

2#крок — Потім виконайте команду bundle install, щоб встановити гем.

bundle install

3#крок — Перейдіть до моделі Post та додайте наступний рядок:

app/models/post.rb

...  
**def self.ransackable_attributes(**_auth_object = nil**)**  
 %w[title body created_at updated_at user_id]  
 end  

**def self.ransackable_associations(**_auth_object = nil**)**  
 %w[posts users comments notifications action_text_rich_texts]  
 end  
...

У Ransack 4 методи ransackable_attributes та ransackable_associations використовуються для вказівки, які атрибути та асоціації моделі можна шукати та фільтрувати за допомогою форми пошуку Ransack.

  1. ransackable_attributes: Цей метод визначає, які атрибути моделі можна шукати та фільтрувати через форму пошуку Ransack; у наведеному прикладі %w[title body created_at updated_at user_id] вказує, що атрибути title, body, created_at, updated_at та user_id доступні для пошуку; параметр _auth_object не використовується в цьому прикладі. Зазвичай він використовується для цілей авторизації, щоб контролювати, які атрибути доступні на основі дозволів поточного користувача.
  2. ransackable_associations: Цей метод вказує, які асоціації моделі можна шукати та фільтрувати за допомогою форми пошуку Ransack; у наданому прикладі %w[posts users comments notifications action_text_rich_texts] вказує, що асоціації posts, users, comments, notifications та action_text_rich_texts доступні для пошуку; Подібно до ransackable_attributes, параметр _auth_object не використовується в цьому прикладі.

Ці методи використовуються для налаштування поведінки форми пошуку Ransack, вказуючи, які атрибути та асоціації можна шукати. За замовчуванням Ransack намагається шукати всі атрибути та асоціації моделі, якщо ці методи не визначені для обмеження або налаштування пошукової поведінки.

4#крок — Перейдіть до терміналу та виконайте команду для контролера:

rails g controller search index

5#крок — Перейдіть до та додайте цей маршрут:

config/routes.rb

get 'search', to: 'search#index'

6#крок — Оновіть вигляд за допомогою форми пошуку: Додайте форму пошуку до ваших виглядів, де ви хочете включити функціональність пошуку. Наприклад, ви можете створити форму за допомогою хелпера search_form_for.
Для початку давайте створимо частковий шаблон для рендерингу в файлі index.html.erb, який буде розміщений над іншими елементами. Цей частковий шаблон буде інкапсулювати специфічні елементи чи секції нашої сторінки для кращої організації та підтримуваності:

app/views/search/_form.html.erb

    <%= search_form_for @query, url: search_path, method: :get, html: { class: "d-flex", role: "search" } do |f| %>    <%= f.search_field :title_or_body_cont, class: "form-control me-2" , placeholder: "Пошук..."%>    <%= f.submit "Пошук", class: "btn btn-outline-secondary-light btn-sm" %>    <% end %>   

7#Крок — Обробка пошуку в Контролері: У вашому контролері використовуйте Ransack для виконання пошуку на основі параметрів, отриманих з форми:
app/controllers/search_controller.rb

class SearchController < ApplicationController  
    # # див. app/controllers/application_controller.rb  
    def index  
        @query = Post.ransack(params[:q])  
        @posts = @query.result(distinct: true)  
    end  
end  

8#Крок — Перейдіть до файлу:
app/controllers/application_controller.rb

class ApplicationController < ActionController::Base  
    ...  
    before_action :set_query       
    def set_query  
        @query = Post.ransack(params[:query])  
        @posts = @query.result(distinct: true)  
    end  
    ...  
end  

9#Крок — Відображення результатів пошуку: Врешті, відобразіть результати пошуку у вашому шаблоні відповідно до вимог вашого застосунку:
app/views/search/index.html.erb

 <%= pluralize(@posts.count, "Результат") %> 
   <%# Дивіться app/views/layouts/_navbar.html.erb %>   
        <% @posts.each do |post| %>        
        <% end %>    
<%= sort_link(@query, :title, "Заголовок", default_order: :asc) %>  
<%= sort_link(@query, :body, "Контент блогу") %>  
<%= sort_link(@query, :user.name, "Користувачі") %>  
<%= link_to post.title, post %>  
<%= post.body.truncate_words(5) %>  
<%= link_to post.user.name, post.user %>  

10#Крок — Перейдіть до файлу навігаційної панелі та додайте рендеринг форми пошуку в нього (див. крок 07):
app/views/layouts/_navbar.html.erb

....   
    **<%= render 'search/form' %>**       
    ... вище цього лежать...    
    <%= render 'layouts/notifications' %>   
...  

11#Крок — Тестування та завантаження в ваш GitHub репозиторій: Тестуйте функціональність пошуку, щоб переконатися, що вона працює як очікується.
Виконання цих кроків допоможе вам інтегрувати Ransack у ваш сайт на Rails 7, що дозволить користувачам легко шукати ваш контент. Обов'язково зверніться до документації Ransack для більш складних налаштувань і параметрів за необхідності.

Це все, друзі!
До зустрічі в наступному епізоді [TODO: LINK TO THE NEXT POST]👋️👋️👋️!
👉️ railsblogv10

Це мої зусилля для слідування туторіалу Deanin з Ransack. YouTube плейлист Deanin: Intro Ruby on Rails 7 For Beginners Tutorial Series https://www.youtube.com/playlist?list=PL3mtAHTeRezB9fnoIcKS4vYFjm23vddb_

Git команди:

....

rails db:drop  
rails db:migrate  
rails s  
git status  
git remote -v  
git pull  
git add -A  
git commit -m ":lipstick: Ransack 4.1: Реалізація та інтеграція"  
git push --set-upstream origin add_ransack  
 remote: Створіть pull-запит для 'add_ransack' на GitHub, відвідавши:  
 remote: https://github.com/giljr/rails_blog_demo/pull/new/add_ransack  

**[Перейдіть до вашого GIT РЕПО і об’єднайте запит]**  

**[Повертаємось до vscode]**  

git checkout master  
git status  
git fetch  
git merge add_ransack  
git pull  
history > history.txt

Кредити та посилання

Додавання рядка пошуку до вашого блогу| Ruby On Rails Для Початківців Частина 6 від Deanin

Ransack Документація від ransack

Ransack Код від github.com

ransack_demo від herokuapp.com

ransack_demo від github.com

Для v2 давайте позначимо все!

git tag -a rails_blog_v10 -m "Blog in Rails 7- v10: Перейдіть за посиланням https://medium.com/jungletronics/a-rails-blog-in-vs-code-quick-start-5c3173191a64" -m "0- Навчіться використовувати Ransack версії 4.1;" -m "1- Генерація конфігурації Ransack;" -m "2- Модифікація моделі Post;" -m "3- Створення методів 'ransackable_attributes' і 'ransackable_associations';" -m "4- Створення маршруту, форм для пошуку в навігаційній панелі та переглядів для відображення" -m "5- Створення контролера пошуку та модифікація контролера додатка;" -m "Дякуємо за завантаження цього проєкту 😍️"   
git push origin rails_blog_v10

Пошукові матчери

[

Пошукові матчери | Документація Ransack

Пошукові матчери

| Документація Ransack Пошукові матчери activerecord-hackery.github.io

](https://activerecord-hackery.github.io/ransack/getting-started/search-matches/?source=post_page-----a69a98a06ed0---------------------------------------)

Схожі пости:

00# Епізод — RailsSeries — Інсталяція Ruby on Rails за допомогою ASDF— Чому ASDF кращий за RBENV для Rails Bootstrap App?

01# Епізод — RailsSeries — Як відправляти електронні листи в Rails 7? — Реєстрація користувачів та введення в систему.

02# Епізод — RailsSeries — 14 Ruby розширення 4 Vs Code — На основі цього відео Deanin.

03# Епізод — RailsSeries — Rails блог у VS Code — Швидкий старт— Як створити блог у VS Code — Частина I

04# Епізод — RailsSeries — Rails блог у VS Code — Стилізація — Як створити блог у VS Code — Частина II

05# Епізод — RailsSeries — Rails блог у VS Code — Створення постів — Як створити блог у VS Code — Частина III

06# Епізод — RailsSeries — Rails блог у VS Code — Поради та трюки з постами — Як створити блог у VS Code — Частина IV

07# Епізод — RailsSeries — Rails блог у VS Code — Devise — Як створити блог у VS Code — Частина V

08# Епізод — RailsSeries — Rails блог у VS Code — Додавання коментарів до поста — Як створити блог у VS Code — Частина VI
09# Епізод — RailsSeries — Rails блог у VS Code — Використання Stimulus— Як створити блог у VS CodeЧастина VII

10# Епізод — RailsSeries — Rails блог у VS Code — Noticed V1— Сповіщення для вашого додатку Ruby on Rails — Частина VIII

11# Епізод — RailsSeries — Rails блог у VS Code — Noticed V2— Сповіщення для вашого додатку Ruby on Rails — Частина IX

12# Епізод — RailsSeries — Rails блог у VS Code —Ransack 4— Додавання пошуку до вашого Rails додатку — Частина X (ця)

Перекладено з: Rails Blog In VS Code - Ransack v 4