抱歉我的英文
我正在研究在辛特拉运行的多面网站。我需要根据给定的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重写的“样式表重写”的任何可能方法? 提前谢谢。
答案 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文件中。