Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Rails应用程序的页面特定CSS_Css_Ruby On Rails - Fatal编程技术网

使用Rails应用程序的页面特定CSS

使用Rails应用程序的页面特定CSS,css,ruby-on-rails,Css,Ruby On Rails,我想为我的Rails应用程序测试两个不同的接口。理想情况下,我希望有两个单独的css文件,一个与每个接口关联(例如,new_interface.css和old_interface.css)。我目前有两个不同的接口部分,一个叫做_new_interface.html.erb,另一个叫做_old_interface.html.erb。如果我想在加载特定视图时调用正确的css文件,我该怎么做?例如,如果我加载_new_interface.html.erb,我希望它加载新的_interface.css文

我想为我的Rails应用程序测试两个不同的接口。理想情况下,我希望有两个单独的css文件,一个与每个接口关联(例如,new_interface.css和old_interface.css)。我目前有两个不同的接口部分,一个叫做_new_interface.html.erb,另一个叫做_old_interface.html.erb。如果我想在加载特定视图时调用正确的css文件,我该怎么做?例如,如果我加载_new_interface.html.erb,我希望它加载新的_interface.css文件并忽略旧的_interface.css文件

My application.css:

/*
*= require_tree
*/

这个问题似乎是针对你需要做什么:

简而言之,您需要将app/assets/stylesheet文件夹重新组织到一些子目录中,并更改清单文件,以便在运行时不会将所有内容捆绑在一起

然后,您可以在视图中放置一些条件逻辑,以便它为作业加载正确的css。标签的内容在这里可能会很有用。您可以编辑app/views/layouts/application.html.erb,并在另一个javascript后面添加一行。然后在视图文件中可以使用

<% content_for :view_specific_css do %>
    <%= stylesheet_link_tag "whatever %>
<% end %>


您应该将它们作为application.css的一部分保留,并执行以下操作

application.html.haml/erb

body{:class => @old_layout ? "old_layout" : "new_layout"}
然后,当您处于脱离控制器中旧布局的操作中时,将

@old_layout = true
然后在你的css文件中,要么用body.old_layout或body.new_layout在所有内容前加上前缀,要么使用scss,sass的子集,像这样敲打你当前的css文件

body.old_layout{
  #all your old layout css goes here, all but body statements of course
}

body.new_layout{
  #all your new layout css goes here, all but body statements of course
}

通过这种方式,只需一个css文件就可以让事情变得简单。使用一种解决方案,您可以轻松地一次切换每个控制器操作。

请检查前面的问题,这是关于JavaScript的,但解决方案与CSS相同。我最终使用了这个解决方案。谢谢你的回复!如果你需要的话,我在这里回答了这个问题。谢谢你的回复。你能解释一下这句话的意思吗?body{:class=>@old_layout?“old_layout”:“new_layout”}这是否意味着它检查old_layout的值,并使body类old_layout为真,而new_layout为假?是的,这差不多是正确的。但请记住,如果(at)old_layout也为nil,它也将执行new_layout,因此在处理使用新布局的方法时,不必在控制器操作中设置(at)old_layout。这也是指出哪些方法仍然需要升级的好方法,因为它们中的每一个都将包含(at)old_layout=true。