gpt4 book ai didi

ruby-on-rails - 在 HTTPS/SSL 站点上使用 Rails googlecharts gem

转载 作者:行者123 更新时间:2023-12-01 09:39:40 25 4
gpt4 key购买 nike

我在我的 rails 应用程序中使用 googlecharts gem 来绘制一些简单的图表。它工作得很好,除了我的应用程序需要始终进行 SSL 加密。为了提取 google 图表,charts gem 当然会向 google 发出一个 http 请求,这会导致浏览器警告大多数用户在页面上存在一些不安全的内容。有没有其他人遇到过这个问题并设计了一个解决方案来避免警告?恐怕我需要找到一种方法来进行 http 调用,将 google 返回的图像存储在本地,然后将其显示在应用程序中,但我认为其他人已经找到了一种很好的方法来处理这个问题。

最佳答案

API Google Charts API 端点存储在 Gchart 类内的类变量 @@url 中。所以最初我想猴子修补类变量以将 url 设置为 https

# Put this in an initializer
Gchart.send :class_variable_set, :@@url, "https://chart.apis.google.com/chart?"

唉,谷歌图表不能通过 https 工作。所以我们不能使用那个方法。由于 Gchart 类方法只返回一个 URL,我们可以将调用包装在代理 Controller 方法中,该方法执行 API 调用服务器端并使用您选择的协议(protocol)通过 ActionController send_data 方法将其代理到客户端。这样您就不必重新发明 Gchart 库的轮子。

class ChartsController < ApplicationController
require 'net/http'
require 'gchart'

def show
options = params.except :controller, :action
options[:data].map! { |x| x.to_i } if options[:data]
begin
chart = URI.parse(Gchart.send options.delete(:type), options)
send_data Net::HTTP.get(chart), :content_type => 'image/png', :disposition => 'inline'
rescue
raise ActiveRecord::RecordNotFound
end
end

end

您可以在 View 中使用的助手:

module ApplicationHelper

def chart_tag(options ={})
image_tag chart_path(options)
end

end

路线

map.resource :chart, :only => :show

用法:

<%= chart_tag :type => "line", :size => '200x300', :title => "example title", :bg => 'efefef', :legend => ['first data set label', 'second data set label'], :data => [10, 30, 120, 45, 72] %>

代码未经测试,但应该会给您一个良好的开端。

关于ruby-on-rails - 在 HTTPS/SSL 站点上使用 Rails googlecharts gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1845553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com