Ruby on Rails 添加页面
来源:互联网 发布:意大利黑手党知乎 编辑:程序博客网 时间:2024/05/16 16:22
本文主要介绍怎样用静态页面在 Ruby on Rails 中是如何生成并返回给浏览器的
首先,我们需要生成一个controller,起名 static_pages
:
$ rails generate controller static_pages
执行这个命令会在 app/controller
目录下生成一个名叫static_pages_controller.rb
的文件,它的内容如下:
class StaticPagesController < ApplicationControllerend
他负责定义各个页面的行为。此时,static_pages
服务器上的一个目录,接下来,我们就要在这个目录中创建各个页面。例如,我们想要添加一个叫home
的静态页面,按以下步骤执行。
1. 在route
中添加home
的记录。
打开config/routes.rb
文件,添加如下代码:
get 'static_pages/home'
get
是一个十分常见的 HTTP 请求方法,这里的意思是“给我返回 static_pages/home
页面”。
2. 在controller
中定义有关home
的action
打开app/controller/static_pages_controller.rb
文件,添加以下代码:
def homeend
上一步中在route.rb
中添加的记录会匹配到home
的action。如果定义 action 的函数是空的,那么直接返回home
页面。
3. 创建home
静态页面
在app/views/static_pages
目录下新建一个文件,命名为home.html.erb
。你完全可以把它当成html页面来写,只不过你也可以在里面插入 ruby 代码。文件后缀的erb
代表embeded ruby
。这里有一个例子:
<% provide(:title,"Home")%><h1>Sample App</h1><p> This is the home page for the <a href="http://www.railstutorial.org/">Ruby on Rails Tutorial</a> sample application.</p>
<% %>
之间的就是嵌入的 ruby 代码。我们注意到上面的页面代码并没有包括一些html页面需要的元素,比如 DOCTYPE
声明,<title>
,<head>
标签等等。这是因为这些东西对于每个页面来说都是重复的内容,而 rails 就是要尽量避免重复的工作。那这些东西到底去哪了呢?
在app/views
目录下面还有一个叫layouts
的目录,里面有一个文件叫application.html.erb
,这其实是 rails 用来处理重复页面结构所用的布局文件。它的内容大概是这样:
<!DOCTYPE html><html> <head> <title><%= yield(:title)%> | Ruby on Rails Tutorial Sample App</title> <%= csrf_meta_tags %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> </head> <body> <%= yield %> </body></html>
这样就减少了重复的代码。我们所创建的每个页面实际上是套用了这个布局。
Rails 本身还集成了测试功能。测试保存在test
目录下。前面执行过的generate
命令为我们在test/controllers
目录下创建了一个测试文件。测试的具体写法在这里不讨论。测试文件的内容大概是这样的:
require 'test_helper'class StaticPagesControllerTest < ActionDispatch::IntegrationTest def setup @base_title = "Ruby on Rails Tutorial Sample App" end test "should get root" do get root_url assert_response :success end test "should get home" do get static_pages_home_url assert_response :success assert_select "title", "Home | #{@base_title}" end test "should get help" do get static_pages_help_url assert_response :success assert_select "title", "Help | #{@base_title}" end test "should get about" do get static_pages_about_url assert_response :success assert_select "title", "About | #{@base_title}" end test "should get contact" do get static_pages_contact_url assert_response :success assert_select "title", "Contact | #{@base_title}" endend
想要运行测试就直接在终端中输入:
$ rails test
P.S. 运行 rails generate
时没反应,或运行 rails test
时报有bug,尝试关掉spring
,用
$ spring stop
然后再运行。
- Ruby on Rails 添加页面
- Ruby on Rails页面缓存
- ruby on rails 手动添加测试文件
- Ruby on Rails: 给button_to添加图标
- Ruby On Rails登陆页面示例
- [Ruby] 网页添加文本编辑器 Kindeditor for Ruby on Rails
- Ruby & Rails on Rails 進階書單
- ruby and ruby on rails
- install Ruby on Rails
- Ruby on Rails 实践
- Ruby on Rails!
- Ruby on Rails
- 关于Ruby on Rails
- 初探Ruby on rails
- Ruby on Rails
- 了解Ruby on Rails
- Ruby on Rails 是什么?
- 什么是Ruby on Rails
- 应该了解的BFC的基本知识
- MARKDOWN语法使用笔记
- IntelliJ IDEA 中如何设置同时打开多个文件且分行显示---即如何设置tabs
- P1092 - 【NOIP2013】火柴排队 解题报告
- 测试小故事4:工作与服务
- Ruby on Rails 添加页面
- 详细解读HTTP
- AndroidListView 二级联动
- 逻辑思维
- Github Page创建个人主页
- 创建yolo静态库过程中遇到的问题汇总
- MySQL date、datetime和timestamp类型的区别
- 激活idea
- 与Servlet API解耦