http://blog.csdn.net/abbuggy/article/details/7555423
在《Ruby on Rails,Routes配置routes.rb及请求解析规则》中我们了解了如何配置Routes来确定那个Controller和Action被调用,之后的工作就完全由Controller接管了。
很自然Controller的工作就是“控制”,在这里经常会出现很多if,else之类的判断语句。比如说“如果能够从数据库中取得某某,那么去做这个,如果没有能够取得某某,那么去做那个”。或者“如果用户已经成功登陆,那么转向某个页面,如果没有登陆,那么转向登陆页面”等等。那么Controller是如何确定转向和绘制哪个页面的呢?在《Ruby on Rails,创建最简单的视图/控制器单元Hello World》中我们创建了位于名为demo的Controller位于app/controllers/demo_controller. rb以及名为index的Templates位于app/views/demo/index.html.erb。
class DemoController < ApplicationController def index end end
为了演示Controller的工作原理,再建立一个新的名为hello的Templets位于app/views/demo/hello.html.erb。
<h1>Demo#hello</h1> <p>Hello Page!</p>
如果请求一个并不存在的Templates会怎么样,浏览器中输入http://localhost:3000/demo/something。demo(Controller)中没有名叫something的方法,跳过去显示something(Templates)。但是我们没有这个Templates,页面提示错误了。
那么,在demo(Controller)中到底做了什么呢?实际上
class DemoController < ApplicationController def index end end
class DemoController < ApplicationController def index render('demo/index'); end end
class DemoController < ApplicationController def index render('demo/index'); end end
class DemoController < ApplicationController def index render('index'); end end
当然了前面那种什么都不写的方式最为简便。:)
http://blog.csdn.net/abbuggy/article/details/7555423