【发布时间】:2019-03-07 12:03:26
【问题描述】:
我有一个带有一组有限中间件的 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 文件夹中提供完全相同的内容,并且可以使用它。
我一定遗漏了一些东西,也许是一些响应标头。知道我错过了什么吗?
【问题讨论】:
标签: css ruby-on-rails controller