本文将教会你创建一个简单的ruby on rails3的网站并了解基本的controller,view,模板的用法!
一:创建ror3 网站
cd c:/www rails new myapp cd myapp rails server
rails new 网站名称:创建一个新的网站,rails server:定位到网站根目录下开启网站服务
rails会自动创建1个myapp目录并在myapp下创建网站所需的目录和文件
在浏览器中输入地址:http://localhost:3000/ 结果如图下:
二:创建控制器和视图
ruby on rails是典型的MVC架构,模型,视图,控制器分别存放在 /app下的models,views,controllers下
在controllers下创建helloword_controller.rb并写入代码:
注:ruby on rails的控制器名称必须以controller结尾,用_连接控制器名称和controller
class HelloworldController < ApplicationController def say end end
我们在控制器中创建了一个空白的say方法,控制器的方法就是Action
创建helloword视图目录及视图文件
在views下新建文件夹:helloword,在helloworld文件夹下创建say.html.erb文件
代码:say.html.erb
hello world!
写好了视图和控制器, 我们就可以在浏览器中查看页面,输入地址:http://localhost:3000/helloword/say
但很抱歉结果出现路由不匹配错误!
这是因为没有定义路由规则,打开routes.rb,文件存放在/config/文件夹下
添加路由规则:match ':controller(/:action(/:id(.:format)))'
代码:/config/routes.rb
Myapp::Application.routes.draw do match ':controller(/:action(/:id(.:format)))' end
重现刷新页面就出现如下页面:
三:使用模板
查看/helloword/say的源代码,我们会发现附加了许多html元素,这是因为我们使用了默认的模板
默认模板存放路径:/app/views/layers/application.html.erb
模板通过:<%=yield%>输出了hello world
那是say.html.erb是怎么套用了模板的呢?
我们再次查看控制器helloworld的代码:
class HelloworldController < ApplicationController def say end end
发现HelloworldController继承了ApplicationController,ApplicationController正是application.html.erb的控制器!
ROR的控制器应该继承于ActionController::Base
1.创建不使用模板的视图
通过这个理论我们可以创建一个不使用模板的页面:
代码:helloworld_controller.rb
class HelloworldController < ActionController::Base def say end end
再次刷新页面并查看源代码,源代码中只有了hello world!
2.创建自己的模板
创建模板视图:文件名:template.html.erb
代码:/app/views/layers/template.html.erb
<!DOCTYPE html> <html> <head> <title>template page,ror start - newmin - atnet.cc</title> </head> <body> <%=yield%> </body> </html>
创建模板控制器:文件:template_controller.rb
代码:/app/controllers/template_controller.rb
class TemplateController < ActionController::Base end
3.为页面添加模板
我们在/helloworld/say/页面上使用模板template,只需要将控制器helloworldController 继承自模板的控制器 TemplateController
代码:/app/controllers/helloworld_controller.rb
class HelloworldController < TemplateController def say end end
刷新页面查看源代码:
我们已经成功创建并使用了自己的模板!