1.4 第一个HelloWorld

作者: 808cb3be8e58 | 来源:发表于2018-12-04 23:58 被阅读26次

    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文件不需要重新启动项目。

    相关文章

      网友评论

        本文标题:1.4 第一个HelloWorld

        本文链接:https://www.haomeiwen.com/subject/lypbcqtx.html