Css 如何从Rails控制器响应样式表?

Css 如何从Rails控制器响应样式表?,css,ruby-on-rails,controller,Css,Ruby On Rails,Controller,我有一个Rails 5.2.0,带有一组有限的中间件。从应用程序中,我想向请求它的浏览器提供一个css文件 css文件的内容取决于请求参数,因此我希望能够从控制器提供该文件。我已经用脚本成功地做到了这一点。以下是我的实现: Rails.application.routes.draw do 获取“资产/脚本”=>“资产#脚本” 获取“资产/样式表”=>“资产#样式表”,:format=>:css 结束 类AssetControllerjs 结束 ##这个动作不起作用 def样式表 css=Acti

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

css文件的内容取决于请求参数,因此我希望能够从控制器提供该文件。我已经用脚本成功地做到了这一点。以下是我的实现:

Rails.application.routes.draw do
获取“资产/脚本”=>“资产#脚本”
获取“资产/样式表”=>“资产#样式表”,:format=>:css
结束
类AssetController<应用程序控制器
##这个动作有效
def脚本
js=ActionController::Base.render(
“资产/脚本”,分配:{foo:params[:foo]}
)
render:js=>js
结束
##这个动作不起作用
def样式表
css=ActionController::Base.render(
“资产/样式表”,赋值:{foo:params[:foo]}
)
render:plain=>css
结束
结束
当浏览器请求脚本时,该脚本将在浏览器中可用:

$.getScript(“https://example.com/assets/script");
但是,我的样式表并非如此:

$(“”{
rel:'样式表',
href:“https://example.com/assets/stylesheet.css"
}).appendTo(“head”);
样式表会返回并添加到浏览器中,但不会被使用。我可以从常规Rails应用程序的
/public
文件夹中提供完全相同的内容,并将其投入使用


我肯定错过了什么,也许是一些回复标题。知道我遗漏了什么吗?

浏览器希望css提供相应的内容类型:

render body: css, content_type: 'text/css'
Rails对此具有默认mime类型:
render css:css

还可以一步渲染:

render template: "assets/stylesheet", formats: [:css], assigns: {foo: params[:foo]}

谢谢。我无法得到你的工作答案,但它让我走上了正确的道路。我使用了
渲染体:css,内容类型:'text/css'
。请你更新你的答案,然后我会给你分数。