样式表取决于主机名

时间:2014-02-17 07:25:27

标签: css ruby sinatra

抱歉我的英文

我正在研究在辛特拉运行的多面网站。我需要根据给定的URL更改CSS样式表。 像:

get '/*' do
    case request.host
    when 'site1.com'
        @style = 'style1'
    when 'site2.com'
        @style = 'style2'
    end
    erb :index
end

然后在index.erb视图中:

<link rel="stylesheet" src="../<%= @style %>.css">

但是如果在动作文件中放置这样的代码,则所有页面内容都是“style1”或“style2”。为了防止这种情况,我需要在每个 get-do 操作中放置 case 代码。我认为这不是Ruby方式。在这种情况下,是否存在以单一操作或其他方式实现css重写的“样式表重写”的任何可能方法? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

通过布局更好地调用样式表,这将是一种简单的方法

答案 1 :(得分:0)

这是使用辅助方法的一个很好的理由。首先添加帮助器:

helpers do
  def include_css(host)
    case host
    when 'site1.com'
      'style1'
    when 'site2.com'
      'style2'
    end
  end
end

然后在你的index.erb:

<link rel="stylesheet" src="../<%= include_css(request.host) %>.css">

免责声明:我不使用ERB,因此它可能无法开箱即用。另外,我不知道index.erb是否是您所有页面共有的模板,所以也许您必须将该行放在您提供的每个.erb文件中。