【Ruby on Rails全栈课程】1.4 第一个HelloWorld

1、文件功能

文件名 功能描述
app/ 有Controllers(控制台)、Models(模型)和Views(视图)文件夹,接下来的内容主要都在这个目录。
config/ 应用程式设定档、路由规则、数据库设定等等
db/ 数据库的映射文件
lib/ 放一些自定义的Module、Class
Gemfile gem插件列表,可以指定插件的版本
README 项目的使用说明

2、网页请求路径

当网页发送一个请求,首先我们会根据网页请求路径以及路由(route.rb)里面的代码,来确定分配到哪个控制器(controller)中,控制器将请求处理之后,将数据发送给视图(view)显示。【Ruby on Rails全栈课程】1.4 第一个HelloWorld_第1张图片

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方法:【Ruby on Rails全栈课程】1.4 第一个HelloWorld_第2张图片

(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!

【Ruby on Rails全栈课程】1.4 第一个HelloWorld_第3张图片

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。【Ruby on Rails全栈课程】1.4 第一个HelloWorld_第4张图片我们打开config/routes.rb文件,看到里面第二行有一个中文双引号,导致字符串没有正常结束,导致第五行的end被当成了字符串,我们将第二行的双引号换成英文的,然后重启项目就可以了。
当我们遇到错误的时候,首先看终端返回的信息,一般都会明确指出错误的具体位置,后面我们在项目中遇到的错误,会具体情况具体分析。

注意:

当我们重新修改了routes.rb、controller、config文件等都需要重新启动项目。修改views文件不需要重新启动项目。

你可能感兴趣的:(Ruby,on,Rails全栈课程--宠物论坛)