Создание запроса клиента Rails - PullRequest
0 голосов
/ 30 декабря 2018

Я создаю приложение Rails 5.0 с веб-интерфейсом JavaScript.Я хочу, чтобы мои пользователи создавали свои собственные запросы при получении списка проектов с использованием интерфейса формы на внешнем интерфейсе (например, фильтрация).

Например:

Select Projects WHERE Status IS "pending" AND Title IS NOT "Building".

или

Select Project WHERE Status IS "approved" AND Title IS NULL.

Могу ли я использовать драгоценный камень?Как я могу сделать его динамичным (и безопасным) в бэкэнде?

Благодарю за помощь!

Обновление

Я думаю, что, возможно, нашелрешение называется Ransack.Хорошо?

http://ransack -demo.herokuapp.com / users / advanced_search

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Чтобы иметь такие встроенные запросы, вы можете использовать pacecar gem, которые предоставляют множество функций.

0 голосов
/ 30 декабря 2018

Если вы ищете способ, позволяющий пользователям выполнять поиск по статусу проекта, вы можете использовать scope.Было опубликовано не так много кода, поэтому я не знаю, как называются ваш контроллер и модели, но я использовал модель Project в качестве примера.

в вашем действии index добавьте

def index
  @projects = Project.all
  if params[:search].present?
    @projects = @projects.by_status_and_title(params[:search])
  end
end

в вашей модели, создайте область действия

#
    scope :by_status_and_title, ->(title_and_stats) { where('title LIKE ? OR status LIKE ?', "%#{title_and_stats}%","%#{title_and_stats}%" ) if title_and_stats.present? }

Или вы можете создать отдельные области действия

scope :by_status, ->(stats) { where('status LIKE ?', "%#{stats}%") }
scope :by_title, ->(t) { where('title LIKE ?', "%#{t}%") }

на ваш взгляд передать поисковый параметр контроллеру

<%= form_tag(some_path, method: 'get', class: 'form-inline justify-content-center') do %>
  <%= search_field_tag 'search', params[:search], class: 'form-control mb-2 mr-sm-3 mb-sm-0 input-width', placeholder: 'Search'  %>
  <%= submit_tag "Search", class: 'btn btn-primary btn-block-sm-down', :name => nil %>                        
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...