【问题标题】:Dynamically insert a stylesheet in rails project在 rails 项目中动态插入样式表
【发布时间】:2012-12-05 11:37:22
【问题描述】:

我已经为我们正在为学校开发的 CMS 构建了一个实时主题选择器。 CMS 是使用 Ruby on Rails 构建的,我(个人)对 Ruby on Rails 没有任何经验(其他人在做后端的工作,我是前端的人)。

现在我希望我的主题选择器(用 javascript(Backbone、Underscore 和 jQuery)编写)与 Rails 一起使用,但我找不到在 Rails 中包含样式表的正确方法。目前我正在给出一个静态路径:

// Insert a new stylesheet
var stylesheet = $("<link />", {
    href: "stylesheets/themes/theme-" + this.themeID + "/theme-color-" + colorset + ".css",
    rel: "stylesheet",
    id: "js-theme-colorset"
});

// Append the stylesheet to the iframe
$('head', $('#js-theme-iframe')[0].contentWindow.document ).append( stylesheet );

但是 CMS 是动态的,所以我想从资产管道中获取样式表,但我不确定如何解决这个问题。试过这个:

// Insert a new stylesheet
var stylesheet = '<%= stylesheet_link_tag "themes/theme-1/theme-color1.css", :id => "js-theme-colorset" %>';

// Append the stylesheet to the iframe
$('head', $('#js-theme-iframe')[0].contentWindow.document ).append( stylesheet );

但这并没有成功..

有什么建议吗?

【问题讨论】:

  • 将您的样式放入 cookie 并重新加载页面不是更容易吗?
  • “那行不通……”因为什么?您没有看到样式化的内容,没有附加 css?什么?
  • @Ragnagord:这是一种可能性。主题(HTML/CSS/JS)被放入 iFrame,但这不是一个很好的解决方案。我会记住的。
  • @WTK:因为它是作为文本插入的。它不可执行,因此未加载样式表。

标签: javascript ruby-on-rails ruby backbone.js underscore.js


【解决方案1】:

找到了,当你想通过javascript链接到你的样式表时,你需要指向:assets。

我正在寻找的链接是:assets/themes/theme-0/theme-color-1.css

您不需要指定样式表,Rails 知道(显然)。只需链接到资产管道。无论如何感谢您的回答:)!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2013-09-16
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多