-2.
Asset pipeline:资源目录,清单文件(manifest file),还有预处理器引擎(preprocessor engine)。
资源目录
app/assets
:存放当前应用程序用到的资源文件lib/assets
:存放开发团队自己开发的代码库用到的资源文件vendor/assets
:存放第三方代码库用到的资源文件
清单文件
当你把资源文件存放在适当的目录后,要通过清单文件告诉 Rails怎么把它们合并成一个文件(使用 Sprockets gem。只适用于 CSS 和 JavaScript,而不会处理图片。)
预处理器引擎
我们通过扩展名告诉 Rails 要使用哪个预处理器。三个最常用的扩展名是:Sass 文件的.scss
,CoffeeScript 文件的
.coffee
,ERb 文件的
.erb
。(按照扩展名的顺序从右向左处理)
-1.
注意文件名 _shim.html.erb
的开头是个下划线,这个下划线是局部视图的命名约定,可以在目录中快速定位所有的局部视图。
0.具名路由
页面 | URI | 对应的路由 |
---|---|---|
“首页” | / | root_path |
“关于” | /about | about_path |
“关于” | /help | help_path |
“联系” | /contact | contact_path |
“注册” | /signup | signup_path |
“登录” | /signin | signin_path |
- SampleApp::Application.routes.draw do
- root to: 'static_pages#home'
- match '/help', to: 'static_pages#help'
- match '/about', to: 'static_pages#about'
- match '/contact', to: 'static_pages#contact'
- .
- .
- .
- end
上面的代码会把根地址
/
映射到 /static_pages/home 页面上,同时生成两个 URI 地址帮助方法,如下所示:
- root_path => '/'
- root_url => 'http://localhost:3000/'
1.条件注释
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
2.
link_to
的第一个参数是链接文本,第二个参数是链接地址,第三个参数是可选的。
3.
- <%= link_to image_tag("rails.png", alt: "Rails"), 'http://rubyonrails.org/' %>
4.局部视图
- <%= render 'layouts/shim' %>
这行代码会寻找一个名为
app/views/layouts/_shim.html.erb
的文件,执行文件中的代码,然后把结果插入视图。
5.简化RSpec测试代码
- before { visit root_path } #<span style="color: rgb(34, 34, 34); font-family: 'Helvetica Neue', 'Luxi Sans', 'DejaVu Sans', Tahoma, 'Hiragino Sans GB', 'Microsoft Yahei', STHeiti; font-size: 14px; line-height: 17.59375px; background-color: rgba(255, 255, 255, 0.701961);">在每个测试用例运行之前访问根地址。</span>
- subject { page } #<span style="color: rgb(34, 34, 34); font-family: 'Helvetica Neue', 'Luxi Sans', 'DejaVu Sans', Tahoma, 'Hiragino Sans GB', 'Microsoft Yahei', STHeiti; font-size: 14.399999618530273px; line-height: 17.600000381469727px; background-color: rgba(255, 255, 255, 0.701961);">测试的对象</span>
- it { should have_selector('h1', text: 'Sample App') } #把测试代码和描述文本合二为一
6. 和其他的具名路由一样,
match '/signup'
会生成
signup_path
方法