如何使用Rails控制器的样式表进行响应?

时间:2019-03-07 12:03:27

标签: css ruby-on-rails controller

我有一个Rails 5.2.0 api app,带有一组有限的中间件。我想从该应用程序向请求它的浏览器提供一个CSS文件。

css文件的内容取决于请求参数,因此我希望能够从控制器提供文件。我已经使用脚本成功完成了此操作。这是我的实现:

Rails.application.routes.draw do
  get "assets/script"     => "assets#script"
  get "assets/stylesheet" => "assets#stylesheet", :format => :css
end

class AssetsController < ApplicationController

  ## This action works
  def script
    js = ActionController::Base.render(
      "assets/script", assigns: {foo: params[:foo]}
    )
    render :js => js
  end

  ## This action doesn't work
  def stylesheet
    css = ActionController::Base.render(
      "assets/stylesheet", assigns: {foo: params[:foo]}
    )
    render :plain => css
  end
end

当浏览器请求脚本时,该脚本将在浏览器中可用:

<script>$.getScript("https://example.com/assets/script");</script>

但是我的样式表却并非如此:

$('<link/>', {
  rel: 'stylesheet',
  href: "https://example.com/assets/stylesheet.css"
}).appendTo('head');

样式表已返回并添加到浏览器中,但尚未使用。我可以从常规Rails应用程序的/public文件夹中投放完全相同的内容,并将其投入使用。

我必须丢失一些内容,也许有一些响应标题。知道我想念什么吗?

0 个答案:

没有答案