在Rails中搜索具有多个参数的航班

时间:2014-11-09 13:14:24

标签: ruby-on-rails

我正在做旅行社搜索表。我需要用户能够输入原点和目的地,并让搜索表单返回符合这些条件的所有航班。

我正在尝试使用RoR,但我是新手,我希望有人可以帮助我。提前谢谢你

这就是我的尝试。

我在视图中的搜索表单就像这样

<%= form_tag summary_path, :method => 'get' do %>
    <p>Origin</p>
    <%= label_tag(:origin) %>
    <%= text_field_tag (:origin), params[:origin] %>
    <p>Destination</p>
    <%= label_tag(:destination) %>
    <%= text_field_tag (:destination), params[:destination] %>

    <%= submit_tag "Search", name: 'nil' %>
    <% end %>

这是Flight Model Object的代码

def self.search(origin,destination)
    #The result of the search has to be all the flights that have the origin and destinations entered by user
    where("origin like ?", "%#{origin}%").where("destination like ?", "%#{destination}%")
end

这是飞行控制器操作中的代码

def show
    if params[:origin, :destination]
        @flights = Flight.search(params[:origin, :destination])
    else
        @alert = "Sorry, there are no results"
    end
end

这是我的数据库。到目前为止我只有两次打架,但我会添加更多

Flight.create origin: 'Madrid', destination: 'Paris', price: 95, from_date: DateTime.new(2014, 11, 06, 10, 30), to_date: DateTime.new(2014, 11, 06, 12, 30), duracion: 2, aerolinea: 'DMS Trips', country: 'España'
Flight.create origin: 'Paris', destination: 'Madrid', price: 95, from_date: DateTime.new(2014, 11, 06, 10, 30), to_date: DateTime.new(2014, 11, 06, 12, 30), duracion: 2, aerolinea: 'DMS Trips', country: 'Francia'

1 个答案:

答案 0 :(得分:1)

您无法一次访问params哈希的两个键。您需要单独检查并传递参数。

if params[:origin] && params[:destination]
  @flights = Flight.search(params[:origin], params[:destination])