使用CSS和局部变量渲染HTML文件

时间:2012-12-03 07:05:38

标签: ruby-on-rails ruby

我在public/company/下放置了一个带有CSS文件css/style.css的HTML文件中有以下内容:

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <link href="css/style.css" rel="stylesheet" type="text/css" media="all"/>
  </head>
  <body>
    <div class="title">Name {name}</div>
  </body>
</html>

我想使用动作中的CSS样式表呈现此HTML文件,并替换{name}而不更改物理文件内容和位置。我可以渲染HTML文件,但找不到CSS文件。任何人都可以帮我用CSS文件渲染HTML文件并替换{name}

3 个答案:

答案 0 :(得分:1)

css/style.css致电时,

company/file.html会尝试加载company/css/style.css

答案 1 :(得分:0)

如果您的CSS文件位于/public/company/css/style.css,那么您的静态HTML文件应将其与绝对路径链接。在资源路径中使用前导/表示绝对路径:

<link href="/company/css/style.css" rel="stylesheet" type="text/css" media="all"/>  

请注意,Rails路由器可能会捕获此请求并引发异常。根据Web服务器的不同,您可能需要启用静态资产或直接提供服务,完全绕过Rails。

更改静态HTML文件服务器端的内容而不实际修改它(即添加ERb)并不简单。你可以:

  • 在响应中注入一些javascript以执行客户端修改。 (难看)
  • 使用Nokogiri等加载静态HTML文件。等,修改内容,并将输出发送到客户端。 (昂贵的)

听起来像这些vanilla HTML / CSS文件是第三方(设计师?客户端?),你想把它放在/public中并让它自动与Rails一起工作。那会很好,但并不容易。你最好使用Rails的内置模板系统,但这意味着修改文件并将它们移动到预期的位置。

答案 2 :(得分:0)

Click here以一种方式查看文章。希望它会有所帮助!

但是,我不确定你为什么要在Rails具备所有功能的情况下进行渲染。