目标
已经完成基本构架了,我们来让整个网站操作更顺利些
目前当你前往http://localhost:3000会看到预设的“欢迎页面”
我们希望当前往到http://localhost:3000时,出现的是Topics的列表页面(index)
在本章我们会将它实现并且学习一些关于Rails上的routes概念
步骤
步骤1:加入根(root)路径
在程序编辑器上打开config/routes.rb这个档案(在装机趴上,我们建议你安装并使用Sublime Text)
档案第一行会看到Rails.application.routes.draw,然后在该行底下加入root ‘topics#index’。当你完成后,会长的如下面的样子:
Rails.application.routes.draw do
root 'topics#index'
(如果是Rails 3.x的版本,要改成写入root to:’topics#index’,并移除public/index.html这个档案).
步骤2:确认异动
重回http://localhost:3000/。应该会看到页面已自动改成Topics的列表了
解说
- root
‘topics#index’是跟Rails说我的首页要指向到topics#index。而topics#index是Topics的列表页(topics_controller.rb里的index
action). - Rails routes控制着URL(网址)与对应的Controller Action,如同地址对应着房子的位置
config/routes.rb这个档案就像是个这个网站里的地址目录,列出所有可以前往的房子
routes.rb使用简短的语法,很难全部列出所有可用的URLs,想要列出所有routes的设定,可以使用Terminal
在Terminal输入rake routes,应该会看到类似下面的数据:
$ rake routes
会秀出所有这个网站上可以用的URLs。当中冒号(:)代表着是个可以输入的变数,所以:id代表着在该URI Patten的:id位置输入随意数字,在预设的情况下,会自动帮你找出数据库对应的第几笔数据。而在括号中的变数是可有可无的
你也可以在开发环境下找到这些信息,前往http://localhost:3000/rails/info也会看到类似下图的信息:
你也会在输入错误网址时也会看到这个表格,试试看http://localhost:3000/sandwich
深入探索Routes(选修)
可以看到paths(路径)与对应的网址与Controller Action。我们也可以在Rails Console(后台)来做routes的测试:(在Terminal输入以下指令)
> rails console
>> app.topics_path
#结果=>“/topics”
>> app.topics_url
#结果=>“http://www.example.com/topics”
app是你代表整个应用程序的特殊物件你可以用它来呼叫routes内容(上面刚做的),与它的Database做联系,或是用’get或’post’做个仿网站请求(pseudo-web requests)…以及更多