Ruby on rails 如何仅在用户按search时呈现搜索结果

Ruby on rails 如何仅在用户按search时呈现搜索结果,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,有人知道如何只在单击搜索按钮后显示搜索结果吗 目前,我的页面正在显示my@flights.each的所有内容。但我只希望这些信息在他们单击搜索后可见: my 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, met

有人知道如何只在单击搜索按钮后显示搜索结果吗

目前,我的页面正在显示my@flights.each的所有内容。但我只希望这些信息在他们单击搜索后可见:

my 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

我相信这是因为你有@flights=flights.all在else条件下。当没有查询时,如点击提交按钮并传递参数后,默认显示所有航班。我会把这条线拿出来,只有

def index

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

或者,您可以从flights搜索中获得AJAX请求,并以这种方式呈现表单

如果这不起作用或者你有其他问题,请告诉我!