12

我从脚手架创建了一个新的 Rails 应用程序,但教程声称将出现以下内容:

<%= stylesheet_link_tag    "application", :media => "all" %>

当我得到:

<%= stylesheet_link_tag    :all %>

它们之间有什么区别?我应该使用哪个?为什么?

4

4 回答 4

24

使用

<%= stylesheet_link_tag    "application", :media => "all" %>

将包含名为application.css的样式表,您可以拥有application.css.sassapplication.css.scss之类的文件或任何其他扩展名,rails 将使用正确的样式表引擎编译 css 文件并提供 application.css 文件。

属性“media=all”实际上是一个css属性,这意味着所有的媒体都会包含css,比如浏览网站时,打印屏幕时等。您可以在此处找到有关媒体属性的更多信息关联。

通过使用

<%= stylesheet_link_tag    :all %>

您将包含您在app/assets/stylesheets目录中的所有样式表。

您可以在此链接上找到更多信息。

于 2013-04-04T08:17:24.443 回答
1

请查看api 文档。在这里你有一些引用:

stylesheet_link_tag :all # =>
  <link href="/stylesheets/style1.css"  media="screen" rel="stylesheet" type="text/css" />
  <link href="/stylesheets/styleB.css"  media="screen" rel="stylesheet" type="text/css" />
  <link href="/stylesheets/styleX2.css" media="screen" rel="stylesheet" type="text/css" />


stylesheet_link_tag "style", :media => "all" # =>
  <link href="/stylesheets/style.css" media="all" rel="stylesheet" type="text/css" />
于 2013-04-04T08:18:17.817 回答
0

第二个不是关于媒体类型的,它的意思是在非资产管道项目中包含样式表目录中的所有 .css。

stylesheet_link_tag :all # =>
<link href="/stylesheets/style1.css"  media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/styleB.css"  media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/styleX2.css" media="screen" rel="stylesheet" type="text/css" />
于 2013-04-04T08:16:08.143 回答
0

stylesheet_link_tag 还接受生成的媒体属性的参数

 < %= stylesheet_link_tag :media => "all" %>

将产生:

<link href="/stylesheets/killer.css" media="all" rel="stylesheet" type="text/css" />

相反,如果您想在样式表目录中包含所有样式表,只需调用:

< %= stylesheet_link_tag :all %>

来自 Rails 维基:

请注意,stylesheet_link_tag 默认会在应用程序的 /public/stylesheets 目录中搜索样式表。此外,当没有其他参数传递给 stylesheet_link_tag 时,type 属性设置为 text/css,media 设置为 screen,relationship 设置为 stylesheet。此外,在传递文件名参数时,您不必在文件名中包含 .css 扩展名。欢迎您包含它,但只要您的 CSS 样式表以 .css 扩展名命名,就没有必要这样做。请注意,如果您包含文件扩展名,Rails 将不再为此调用查找扩展名为 .css 的文件。例如,如果您想包含一个名为 my_style.new.css 的样式表,以下内容是不够的:

于 2013-04-04T08:18:44.840 回答