我有一个 Rails 项目,我需要上传一个 csv 文件并生成一个图表,但我不确定如何最好地解决这个问题。
我可以使用回形针上传 csv 文件并存储在我的数据库中。
我使用 gemslazy_high_charts 和 gmaps4rails ,我可以用我的纬度和经度坐标很好地映射到一个城镇,但我还希望在每个标记的显示中显示我想要存储在目录中的 csv 中的 highcharts 图表和输出到相关城镇。
我的表格
<%= simple_form_for @soiltemp, :html => {:multipart => true} do |f| %>
<div class="form-inputs">
<%= f.input :site %>
<%= f.input :latitude %>
<%= f.input :longitude %>
<%= f.input :csv, as: :file %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
索引视图
<script src="//maps.google.com/maps/api/js?v=3.13&sensor=false&libraries=geometry" type="text/javascript"></script>
<script src='//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.14/src/markerclusterer_packed.js' type='text/javascript'></script>
<h1>Soil Temperatures</h1>
<hr>
<div style='width: 100%;'>
<div id="map" style='width: 100%; height: 500px;'></div>
</div>
<script type="text/javascript">
handler = Gmaps.build('Google');
handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
markers = handler.addMarkers(<%=raw @hash.to_json %>);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
});
</script>
<% end %>
控制器
class SoiltempsController < ApplicationController
def index
@soiltemps = Soiltemp.all
@hash = Gmaps4rails.build_markers(@soiltemps) do |soiltemps, marker|
marker.lat soiltemps.latitude
marker.lng soiltemps.longitude
marker.infowindow soiltemps.want to display graph here
end
end
架构
create_table "soiltemps", :force => true do |t|
t.string "site"
t.float "latitude"
t.float "longitude"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "csv"
end