Как отображать результаты поиска только тогда, когда пользователь нажимает поиск - PullRequest
0 голосов
/ 01 июня 2019

Кто-нибудь знает, как отображать результаты поиска только после того, как вы нажали кнопку поиска?

В настоящий момент на моей странице в настоящее время отображается все, начиная с моего @ flight.each.Но я хочу, чтобы эта информация стала видимой только после того, как они нажали на поиск:)

мой index.html.erb

<h1>Flights#index</h1>
<p>Find me in app/views/flights/index.html.erb</p>





From Airport:
<%= form_for(flights_index_path, method: :get) do %>
    <%= text_field_tag :from_airport_id, params[:from_airport_id] %>

    <%= submit_tag 'Search' %>
<% end %>

<% @flights.each do |f| %>
<br>
<br>

    Flight from <%= f.from_airport_id %>
    Arriving at <%= f.to_airport_id %>
<% end %>

мой контроллер

class FlightsController < ApplicationController
  def index

    if params[:from_airport_id]
      @flights = Flight.where('from_airport_id LIKE ?', "%#{params[:from_airport_id]}%")
    else
      @flights = Flight.all
    end
  end


  private
    def flights_path
      params.require(:flight).permit(:flight, :from_airport_id)
    end

end

1 Ответ

2 голосов
/ 01 июня 2019

Я полагаю, это потому, что у вас @flights = Flight.all в состоянии else. При отсутствии запроса (например, после нажатия кнопки «Отправить» и передачи параметров) по умолчанию отображаются все рейсы. Я бы взял эту строку и получил бы

def index

    if params[:from_airport_id]
      @flights = Flight.where('from_airport_id LIKE ?', "%#{params[:from_airport_id]}%")
    else
      @flights = []
    end
  end

Или вы можете получить запрос AJAX из поиска ваших рейсов и таким образом оформить форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...