新手问题 rails 的编译的原则是什么

iml6yu · 2014年11月27日 · 最后由 iml6yu 回复于 2014年11月28日 · 2194 次阅读

首先向各位大神说声 sorry,因为本帖的技术含量真的不高。

进入正题, 1、在做 rails 的时候,如果我在 app/views/xxx/xxx.html 创建文件(非.erb 文件),在发布之后还是会被 rails 进行再次编译,有没有什么办法可以不让 rails 编译静态文件(非资源目录)。

2、rails 在编译的时候,原则是什么?

希望得到解答

注:如果答案不是三言两语就能说明白,请附上资料链接,再次谢过~!

.html 视图文件应该是不会被编译的吧,原样输出就是了。 编译也只是 assets 目录下的静态资源文件比如 css,图片,js 脚本 等 会被处理并且文件名会被增加上指纹信息。

找到对应路由,放在 public 目录

做缓存?

1 不叫编译,是解析。模板引擎会去找那个文件,虽然你写 .html 结尾,它默认按照 erb 读取解析。具体可以看看 \ https://github.com/rtomayko/tilt 2,静态文件都放到 public 下,或者 vendor/assets/javascripts/ vendor/assets/stylesheets/

#1 楼 @shinefine 情况是这样的,比如我在 app/views/xxx/xxx.html 文件源码是

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" type="text/css" href="stylesheets/bs/bootstrap.min.css">
  <!--[if lt IE 9]>
      alert('Hey,哥们,换个浏览器吧,我懒到没写兼容包-_-!!');
      window.top.opener='';
      window.top.close();
      </script>
    <![endif]-->
</head>
<body>
</body>
</html>

而发布之后通过浏览器查看源码就变成了如下

<html>
<head></style>
  <title>Bbs</title>
  <link data-turbolinks-track="true" href="/assets/application-89eb8c2051810ff68041626843d0d71d.css" media="all" rel="stylesheet">
  <script data-turbolinks-track="true" src="/assets/application-904efb7268b445af06ea1dfb13b497aa.js"></script>
  <meta content="authenticity_token" name="csrf-param">
<meta content="o6MqhDHPXUTDzl55epmtEbMWzzMETBHvYWtlxRcC/uo=" name="csrf-token">
</head>
<body>
  <!--[if lt IE 9]>
      alert('Hey,哥们,换个浏览器吧,我懒到没写兼容包-_-!!');
      window.top.opener='';
      window.top.close();
      </script>
    <![endif]-->
</body></html>

区域别在于 rails 给添加了一个 head 标签,并且把以前的 html 内的全部作为 body 内容了。这个是因为 rails 的解释规则导致的么?

#4 楼 @liwei78 ,麻烦你帮我看看 5 楼,是因为 rails 解释的时候就会这样么?原理是什么呢

#6 楼 @iml6yu 因为默认加载 layout 了 在 controller 里,layout false, only: 不需要 layou 的 action 名字

#7 楼 @loveltyoic #4 楼 @liwei78 #1 楼 @shinefine #2 楼 @zhangyuan #3 楼 @yfractal

感谢各位~! 7 楼是我想要的答案。谢谢大家了,是我问的不对,所以导致大家没有明白我的意图。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号