1、文件功能
文件名 | 功能描述 |
---|---|
app/ | 有Controllers(控制台)、Models(模型)和Views(视图)文件夹,接下来的内容主要都在这个目录。 |
config/ | 应用程式设定档、路由规则、数据库设定等等 |
db/ | 数据库的映射文件 |
lib/ | 放一些自定义的Module、Class |
Gemfile | gem插件列表,可以指定插件的版本 |
README | 项目的使用说明 |
2、网页请求路径
当网页发送一个请求,首先我们会根据网页请求路径以及路由(route.rb)里面的代码,来确定分配到哪个控制器(controller)中,控制器将请求处理之后,将数据发送给视图(view)显示。 请求路径3、HelloWorld
(1)连接远程,打开项目文件目录(cd /vagrant/data_system),咱们开始编写第一个HelloWorld,运行rails g controller home index,其中home代表controller,index代表action方法
vagrant@vagrant-ubuntu-trusty-64:/vagrant/data_system$ rails g controller home index
#系统返回信息
create app/controllers/home_controller.rb
route get 'home/index'
invoke erb
create app/views/home
create app/views/home/index.html.erb
invoke test_unit
create test/controllers/home_controller_test.rb
invoke helper
create app/helpers/home_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/home.coffee
invoke scss
create app/assets/stylesheets/home.scss
我们在sublime打开data_system项目,看到app/controllers/home_controller.rb文件夹下会有以下代码,可以看到系统自动生成了一个HomeController类,以及一个index方法:
(2)在路由(config/route.rb)文件中改一下代码
#原代码
get 'home/index'
#改成
get "home/index" => "home#index"
意思是http://localhost:3000/home/index网址对应到HomeController中的index方法。
(3)我们再打开app/views/home/index.html.erb文件,将里面的代码全部删掉替换成下面代码,不要忘了保存文件哦~
<h1>Hello, World!</h1>
然后rails s启动项目,在浏览器中打开http://localhost:3000/home/index页面(注意mac电脑是http://192.168.33.10:3000/home/index)出现Hello,World!
Hello,World!4、新生疑问点
主要将我当时刚学习ruby时的困惑,我在这里梳理一下。
(1)Controllers(控制台)、Models(模型)和Views(视图)还有route.rb(路由)是什么关系,代码执行顺序是怎样的?
答:在浏览器输入http://localhost:3000/home/index链接,会根据home/index对应到route.rb文件中的get "home/index" => "home#index”路由,根据路由home#index找到home_controller中的index方法,方法中可能会有实例变量传递给view模板,也就是views/home/index.html.erb文件。这是ruby on rails的规则,都是根据home和index找到对应的文件,所以文件名称(比如home/index.html.erb、home_controller)要按照规则来,不能乱改。
(2)如果出现错误如何去查看错误原因以及排除错误呢?
答:我们先制造一个错误,在路由(config/route.rb)文件中代码改成,将英文双引号" 改成中文双引号“
#原代码
get "home/index" => "home#index"
#改成
get "home/index" => "home#index”
然后重启项目(ctrl+c停止项目,rails s启动项目),在终端会出现以下错误,SyntaxError错误是语法错误,程序写的不合规范就会报此错误。下面是错误的详情,明确指出了是config/routes.rb文件中的第5行少了一个end。
SyntaxError
我们打开config/routes.rb文件,看到里面第二行有一个中文双引号,导致字符串没有正常结束,导致第五行的end被当成了字符串,我们将第二行的双引号换成英文的,然后重启项目就可以了。
当我们遇到错误的时候,首先看终端返回的信息,一般都会明确指出错误的具体位置,后面我们在项目中遇到的错误,会具体情况具体分析。
注意:
当我们重新修改了routes.rb、controller、config文件等都需要重新启动项目。修改views文件不需要重新启动项目。
网友评论