显示来自搜索查询的额外数据
Display extra data from a Search Query
目前正在通过 Udemy 课程学习,但将讲座更改为我对开发更感兴趣的内容。
项目基础:
- 使用 Gem Flightstats-flex 提取航班数据
- 尝试显示来自搜索查询的相关信息
当前设置
app/controllers/trackers_controller.rb
class TrackersController < ApplicationController
def search
@tracker = FlightTracker.new_from_lookup(params[:tracker])
render 'users/my_tracker'
end
end
app/models/flight_tracker.rb
class FlightTracker < ActiveRecord::Base
self.table_name='trackers'
def self.new_from_lookup(tracker)
flight_track = FlightStats::FlightStatus.by_flight_id(tracker)
# flight_position = FlightStats::FlightStatus.track_by_flight_id(tracker)
end
这就是问题所在,当我从 flight_position = FlightStats::FlightStatus.track_by_flight_id(tracker)
中删除 #
时
- 结果覆盖顶部
- 如果我只使用它显示的行,反之亦然用于顶行
app/views/users/my_tracker.html.erb 数据确实呈现
<h1>
My Tracker
</h1>
<h3>Search for Flights</h3>
<div id="tracker-lookup">
<%= form_tag search_trackers_path, method: :get, id: "tracker-lookup-form" do %>
<div class="form-group row no-padding text-center col-md-12">
<div class="col-md-10">
<%= text_field_tag :tracker, params[:tracker],
placeholder: "Stock ticker symbol", autofocus: true,
class: "form-control search-box input-lg" %>
</div>
<div class="col-md-2">
<%= button_tag(type: :submit, class: "btn btn-lg btn-success") do %>
<i class="fa fa-search"></i> Look up a tracker
<% end %>
</div>
</div>
<% end %>
</div>
<div class="well results-block">
<%=@tracker.inspect%>
<strong>ID: </strong> <%#= @tracker&.flight_id %>
<strong>Code: </strong> <%#= @tracker&.carrier_fs_code %>
<strong>Number: </strong> <%#= @tracker&.flight_number %>
<strong>Departure: </strong> <%#= @tracker&.departure_airport_fs_code %>
<strong>Arrival: </strong> <%#= @tracker&.arrival_airport_fs_code %>
<%# <strong>Departure Terminal: </strong> <%= @tracker&.departure_terminal %> %>
<%=@position.inspect%>
</div>
所以当用户搜索 .by_flight_id
时,我希望它显示 .track_by_flight_id
的相关数据
希望在一次查询完成后进入下一阶段更多的数据关联
作为我的评论的例证
def self.new_from_lookup(tracker)
flight_track = FlightStats::FlightStatus.by_flight_id(tracker)
flight_position = FlightStats::FlightStatus.track_by_flight_id(tracker)
OpenStruct.new(flight_track: flight_track, flight_position: flight_position)
end
然后你需要重写模板my_tracker.html.erb来处理新的数据结构
目前正在通过 Udemy 课程学习,但将讲座更改为我对开发更感兴趣的内容。
项目基础: - 使用 Gem Flightstats-flex 提取航班数据 - 尝试显示来自搜索查询的相关信息
当前设置
app/controllers/trackers_controller.rb
class TrackersController < ApplicationController
def search
@tracker = FlightTracker.new_from_lookup(params[:tracker])
render 'users/my_tracker'
end
end
app/models/flight_tracker.rb
class FlightTracker < ActiveRecord::Base
self.table_name='trackers'
def self.new_from_lookup(tracker)
flight_track = FlightStats::FlightStatus.by_flight_id(tracker)
# flight_position = FlightStats::FlightStatus.track_by_flight_id(tracker)
end
这就是问题所在,当我从 flight_position = FlightStats::FlightStatus.track_by_flight_id(tracker)
#
时
- 结果覆盖顶部
- 如果我只使用它显示的行,反之亦然用于顶行
app/views/users/my_tracker.html.erb 数据确实呈现
<h1>
My Tracker
</h1>
<h3>Search for Flights</h3>
<div id="tracker-lookup">
<%= form_tag search_trackers_path, method: :get, id: "tracker-lookup-form" do %>
<div class="form-group row no-padding text-center col-md-12">
<div class="col-md-10">
<%= text_field_tag :tracker, params[:tracker],
placeholder: "Stock ticker symbol", autofocus: true,
class: "form-control search-box input-lg" %>
</div>
<div class="col-md-2">
<%= button_tag(type: :submit, class: "btn btn-lg btn-success") do %>
<i class="fa fa-search"></i> Look up a tracker
<% end %>
</div>
</div>
<% end %>
</div>
<div class="well results-block">
<%=@tracker.inspect%>
<strong>ID: </strong> <%#= @tracker&.flight_id %>
<strong>Code: </strong> <%#= @tracker&.carrier_fs_code %>
<strong>Number: </strong> <%#= @tracker&.flight_number %>
<strong>Departure: </strong> <%#= @tracker&.departure_airport_fs_code %>
<strong>Arrival: </strong> <%#= @tracker&.arrival_airport_fs_code %>
<%# <strong>Departure Terminal: </strong> <%= @tracker&.departure_terminal %> %>
<%=@position.inspect%>
</div>
所以当用户搜索 .by_flight_id
时,我希望它显示 .track_by_flight_id
希望在一次查询完成后进入下一阶段更多的数据关联
作为我的评论的例证
def self.new_from_lookup(tracker)
flight_track = FlightStats::FlightStatus.by_flight_id(tracker)
flight_position = FlightStats::FlightStatus.track_by_flight_id(tracker)
OpenStruct.new(flight_track: flight_track, flight_position: flight_position)
end
然后你需要重写模板my_tracker.html.erb来处理新的数据结构