热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

rails_了解您的Rails应用程序结构[初学者指南]

rails因此,您正在学习Rails。您正在学习一个教程,必须输入:railsnewmy_app和voil!您已经准备好第一

rails

因此,您正在学习Rails。 您正在学习一个教程,必须输入: rails new my_app和voilà! 您已经准备好第一个Rails应用程序,可以开始使用它了。

可是等等! 您刚刚创建的文件和文件夹是什么?

正如奇妙而神奇的Rails一样,了解从何处开始工作也可能具有挑战性。 即使您正在学习教程,您也无法回答所有关于为什么要对所有这些文件进行更改的问题。

在本文中,我将 用简单的英语 解释 :

  • Rails应用程序的结构
  • 您的应用程序包含哪些关键元素
  • 这些元素如何相互链接
  • 在终端中运行的重要命令

阅读本文后,您将在构建第一个应用程序并真正按照自己的操作进行时更有信心。

免责声明:此文章是针对初学者的,一些概念将得到简化以简化理解。 如果您想更深入地了解它们,我仍将提供指向专门资源的链接。

MVC

您需要了解的第一个概念是模型视图控制器结构。 一旦掌握了窍门,您就在轨道的另一端( 获得我聪明的文字游戏? )。

您可以将MVC看作是生活在Web应用程序中的一家小型公司。 它处理通过不同部门(模型,视图和控制器)的信息流,以提供出色的客户体验。

如您所见,当您使用浏览器访问网站时,MVC会处理过程的每个部分。 借助MVC,您可以订阅网站,登录帐户,注销等等。

让我们一步一步地回顾一下Web应用程序内部发生的过程:

  1. 您要创建一个Facebook帐户。 您在浏览器中打开该网站。
  2. 您必须先注册,然后填写信息,然后单击“注册”按钮。
  3. 路由器收到指令。 他是负责接听所有来电到公司(网站)并将他们重定向到控制人员的人。
  4. 该人在财务主任办公室工作。 接听电话时,她从路由器听到您要创建一个新帐户。
  5. 财务负责人女人看着她的电话簿,并拨打负责呈现该页面的View员工的电话号码。
  6. View员工收到Controller女士的指示,以通过浏览器向您显示该网页。 你准备好了。
  7. 您输入用户名和密码,然后按Enter。
  8. 该过程再次开始:路由器呼叫控制器办公室,但是这次呼叫新员工,即登录办公室的负责人。
  9. 该控制员不会立即致电“查看”人员:他必须首先检查您是否被允许登录。
  10. 因此,主计人员从样板办公室打电话给天才女孩。 在数据库部门的老太太的帮助下,她是负责处理公司中所有信息的人。
  11. 天才女孩检查您的凭据并运行一些验证以确保您被授权。
  12. 确定您的身份后,她会致电财务总监办公室的那个人,让他知道您可以离开。
  13. 然后,Controller致电View办事处的另一个人,指示他们在浏览器中呈现一个新页面,即您的个人资料页面。

和presto! 这就是基于MVC结构(使用Rails或其他技术)的网站内部发生的情况。 一切都在几秒钟内完成!

Rails应用程序中的MVC

您可能会想:“ 这个MVC是多么出色的公司! 但这与我的应用有什么关系?”

好吧,该应用程序 公司。 而且您即将成为首席执行官,因此您最好将注意力放在您的工作上!

就像您在启动第一个应用程序时注意到的那样,项目中内置了许多不同的文件夹和文件。 这些文件代表您的应用程序的MVC,您将必须使用它们来使整个系统按您希望的方式工作。

最后,我将为您提供一些链接,这些链接将向您展示如何在将来继续使用Rails构建应用程序。

那么,我们在这个Rails应用程序的目录中寻找什么 ?

如上图所示,您的应用程序在主目录中有很多文件夹和文件。 您最常使用的文件夹是app文件夹。

应用文件夹

我们应该从查看应用程序文件夹开始。 它包含与我们一直在讨论的MVC相关的所有文件。 看看里面每个文件夹的注释。

现在看来似乎不难理解,对吧? 如您所见,一切结构都很好,您只需要知道如何阅读即可。

一旦您的应用开始增长,每个MVC文件夹将具有许多文件,它们将存储与您网站的不同部分相关的不同控制器,模型或视图。

让我们深入研究app文件夹:我们将专注于MVC目录:

  1. 楷模
  2. 控制器
  3. 观看次数

模型的文件夹

创建应用程序时,您将创建的第一个元素是Model 。 一个应用程序可以具有多个模型! 这取决于你想如何存储的信息。

请记住,模型负责处理您网站内的数据。 例如:如果您正在构建博客,则想存储与用户,帖子以及这些帖子的评论有关的信息。

另外,您希望该信息可以访问和组织,以使其永远不会混淆。 这就是模型的用途,您将需要一个用户,发布和评论模型,因为它们是完全不同的东西,具有自己的规范。

在每个模型文件中,您将(在开头)包括:

  1. 验证 决定要在数据库中存储什么以及如何存储(例如,避免用户名为空)。
  2. 应用程序不同模型之间的关联 (以检查哪个用户发布了一篇文章,或一篇文章有​​多少条评论)。

重要命令: rails generate model Name

*型号名称必须为单数

控制器文件夹

创建模型后,您需要构建控制器来管理应用程序内部的通信(记住MVC工作流程以及所有事物如何通过控制器)。

每个模型都有一个关联的控制器文件。 例如,在您的博客应用中,您将具有一个控制用户模型的users_controller.rb文件。 该文件包括与该模型有关的所有方法(操作)(请参阅CRUD )。

与控制器文件有关的一些约定和技巧是:

  1. 控制器名称与它控制的模型相同,但以复数形式表示。
  2. 每个控制器方法在route.rb文件中都有其对应的路由。 这样可以使应用正常运行(记住路由器会调用控制器)。 当我们进入config文件夹时,将对此进行更多介绍。
  3. 控制器内的几乎所有方法都呈现一个View。 方法的名称和视图文件必须匹配,以便Rails可以在用户执行操作时显示页面。
  4. user_params方法用于安全地传递与用户关联的参数(名称,电子邮件,密码),并且应为私有。

重要命令: rails generate controller name

视图的文件夹

您将创建的MVC的最后一个元素是视图。 如果您了解前端的基础知识,则在此部分中将包含构成页面HTML文件。

使用应用程序的视图时,有一种Rails 方式可以组织视图文件夹内,其他文件夹内的文件( folderception ):

  1. 布局文件夹包含与您网站的总体结构有关的所有HTML文件。 例如,您要在此处放置导航栏文件。
  2. 与模型相关的文件必须存储在以其命名的文件夹内(例如,用户模型的视图位于users文件夹内)。 注意多元性。
  3. 有一个共享文件夹,其中包含在网站的不同页面(部分)中使用的视图。

Rails的一个很酷的功能是能够将HTML文件分离为partials 。 当您要在网站的不同视图中使用相同的模板并使内容保持干燥时,此功能非常有用。 这些文件以“ _”开头。

关于使用Rails创建应用程序的另一个有趣的部分是,您创建HTML文件是动态的。 这些文件将包含嵌入式ruby (文件扩展名为.html .erb ),使您可以在HTML设计中合并变量(例如,当您要显示用户名时)。

这就是Rails应用程序MVC架构的基础。 但是,如果您不能正确连接它,那么这一切都不重要。 因此,您需要设置路线。

您可以通过以下方式生成控制器时创建视图的文件: rails generate controller name view_name view2_name

路线文件

在config文件夹中,您可以找到多个文件来调整Rails应用程序的行为,并添加要在应用程序启动时运行的其他代码。

首先,您将在此处使用的唯一文件是route.rb 。 将此视为公司的电话指南。 您的应用程序将检查此文件以调用正确的控制器并显示正确的视图。

您将在应用程序上创建的路由基于使用以下HTTP请求的RESTful原则:获取,放置,发布和删除。

在路由文件中,您将为应用的每个部分创建正确的联络人 。 检查上面的图像。 在第10和11行中,您声明,当用户进入 / signup页面时,他们将被路由到User Model方法,并且当他们单击signup按钮时,他们将使用内部的create方法发布信息。 用户模型

看一下图像的最后一行。 这是使用rails:resources:model声明应用程序中所需的所有路由的最简单方法。 此行将创建到模型的所有RESTful路由。

提示:请记住在创建Controller之后立即设置路线,否则在尝试打开页面时会遇到很多错误(因为我们不知道要呼叫谁来显示视图)。

在对Rails应用程序进行了广泛的概述之后,使用文件时应该会感到更自在。

在查看应用程序目录时,您会不会感到不知所措? 我希望本文对理解Rails的工作原理有所帮助。

需要更多帮助吗? 随时在帖子中添加评论,我很乐意回答您的问题!

记得在我的社交媒体上关注我:

您要检查的资源:

  • Odin's Project ,一个免费的在线课程,可以成为全栈开发人员。
  • 迈克尔·哈特尔(Michael Hartl)的Ruby on Rails教程,这是构建应用程序的绝佳教程。
  • Rails指南是技术支持的绝佳参考。

翻译自: https://hackernoon.com/understanding-your-rails-application-structure-r8w32xj

rails



推荐阅读
  • 本文讨论了在ASP中创建RazorFunctions.cshtml文件时出现的问题,即ASP.global_asax不存在于命名空间ASP中。文章提供了解决该问题的代码示例,并详细解释了代码中涉及的关键概念,如HttpContext、Request和RouteData等。通过阅读本文,读者可以了解如何解决该问题并理解相关的ASP概念。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • 本文介绍了ASP.NET Core MVC的入门及基础使用教程,根据微软的文档学习,建议阅读英文文档以便更好理解,微软的工具化使用方便且开发速度快。通过vs2017新建项目,可以创建一个基础的ASP.NET网站,也可以实现动态网站开发。ASP.NET MVC框架及其工具简化了开发过程,包括建立业务的数据模型和控制器等步骤。 ... [详细]
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
  • 本文介绍了一个Magento模块,其主要功能是实现前台用户利用表单给管理员发送邮件。通过阅读该模块的代码,可以了解到一些有关Magento的细节,例如如何获取系统标签id、如何使用Magento默认的提示信息以及如何使用smtp服务等。文章还提到了安装SMTP Pro插件的方法,并给出了前台页面的代码示例。 ... [详细]
author-avatar
手机用户2602906645
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有