【问题标题】:Rails routes for js filejs文件的Rails路由
【发布时间】:2018-02-09 17:33:05
【问题描述】:

我得到了一个使用 webpack 插件制作的 ServiceWorker,该插件通过http://example.com/packs/sw.js URL 公开可用。因为我希望这个 Service Worker 控制整个网站,所以我需要从 http://example.com/ 为其提供服务。所以,不允许redirect_to
我如何为此设置routes.rb

我试过的是:

已添加:get '/sw' => 'sw#show'routes.rb
创建控制器sw_controller.rb:

require 'net/http'

class SwController < ActionController::Base
  def show
    respond_to do |format|
      format.all {
        uri = URI('http://example.com/packs/sw.js')
        res = Net::HTTP.get(uri)
        render inline: res
      }
    end
  end
end

我知道这很丑,但应该可以:

  • 访问http://example.com/sw.js 得到No route matches [GET] "/sw.js"
  • 访问http://example.com/packs/sw.js 正确打印出 service worker
  • 访问 http://example.com/sw 正确打印出 service worker
  • 同时访问http://example.com/sw.lol打印服务人员

【问题讨论】:

    标签: ruby-on-rails routes service-worker


    【解决方案1】:

    config/initializers/mime_types.rb 中尝试添加:

    Mime::Type.register "text/javascript", :js
    

    这应该允许format.all 识别 Javascript 请求,否则它将忽略。

    来源:http://api.rubyonrails.org/classes/ActionController/MimeResponds.html

    【讨论】:

    • 我认为这是正确的方法,但不能解决问题。事情保持不变(是的,我已经重新启动了几次服务器)。我也试过application/javascript,但没有任何改变。 http://example.com/sw.js 的 GET 请求也没有标头,并不断给我 No route matches [GET] "/sw.js"
    • 如果你运行 rake routes 会发生什么?它会显示你的路线吗?
    • 是的,路由确实存在,访问http://example.com/sw 可以正确打印出服务人员,但访问http://example.com/sw.js 会得到No route matches [GET] "/sw.js" image confirms
    • 好的,所以我从未尝试过这个...get '/sw.js' =&gt; 'sw#show' 有什么作用吗?
    • 很高兴您对它进行了排序。可能值得将您的解决方案作为答案发布,因为那是真正为您解决问题的东西。
    猜你喜欢
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2021-09-25
    相关资源
    最近更新 更多