如何使用Ruby on Rails从头开始创建博客

WebFX总统。Bill在互联网营销行业有超过25年的经验,擅长SEO, UX,信息架构,营销自动化等。William在希彭斯堡和麻省理工学院的科学计算和教育背景为MarketingCloudFX和WebFX的其他关键研发项目提供了基础。

本教程向您展示如何创建一个基本的博客使用Ruby on Rails.通过涵盖Rails web应用程序的设计方面,它可以更容易地理解Rails背后的概念以及它们是如何结合在一起的。

本文的第一部分Ruby on Rails入门:安装,向您展示如何安装Ruby on Rails。

Ruby on Rails概述

Ruby on Rails是Ruby语言的一个框架,用于web应用程序的快速开发。它允许您专注于解决客户的问题,而不是陷入构建基础设施来支持客户的问题。

让我们面对它,您不希望每次开始一个新项目时都构建数据库访问层。您也不希望定期实现功能完整的MVC模式。

这就是框架的全部意义;它们为你提供了一个起点,你可以在此基础上进行开发。这可以让你把精力集中在客户的需求上,而不是所谓的牦牛剃须任务,它会拖你的后腿。

谈MVC

值得一提的是MVC(模型-视图-控制器),因为它可能是阻碍人们尝试Rails等框架的因素之一。MVC是一个相对高级的编程主题,但是,我不打算建议您学习如何实现MVC模式,而只是学习如何使用它。记住这一点,让我们看看缩写M.V.C.中的每个字母是什么

方法以及它们如何适应web开发。

基础上

模型层是为应用程序将使用/存储的数据定义类的地方。例如,如果您想为博客存储文章,您将有一个“Post”模型。该模型具有与数据库交互、检索和存储数据的能力。

该功能是通过从ActiveRecord超类继承而获得的。任何作用于此数据的方法也应该放在模型中。

V背影

视图层有一个主要目的——返回要在用户浏览器上呈现的相关HTML。在rails中,视图保存在一个erb(嵌入式Ruby)文件中,该文件包含HTML和嵌入式Ruby语句。

C控制

没有控制器,什么也不会发生。控制器与模型交互以检索和存储数据。然后,它将从模型获得的任何数据传递给视图。

视图将生成的HTML返回给控制器,控制器将此返回给用户浏览器。

MVC总结

这是一个非常简明的MVC概述。我强烈建议您仔细阅读这个主题,因为它是破解Rails的关键。本文从betterexplained.com是在Rails中学习MVC的一个很好的资源。

然而,最好的学习方法是,安装框架然后开始玩。

为博客创建一个新的Rails项目

在您做任何事情之前,您需要创建一个新项目。在Rails中,项目是一个文件夹结构,用于存储与web应用相关的所有文件。要创建项目,请在命令提示符处输入以下命令:

> rails myblog -d mysql

注意,在本例中,我们使用MySQL作为DBMS。

这个命令将创建一个名为myblog它包含所有相关的项目文件夹。

重要文件和文件夹

文件/文件夹 目的
配置的形式 这个文件是一个YAML(代表- YAML不是标记语言)文件。它包含关于DBMS提供程序的详细信息和DBMS的身份验证详细信息。
配置\ routes.rb 这是一个ruby文件。

它允许您配置如何路由HTTP请求。

应用程序控制器\ \ 包含控制器文件。控制器是ruby文件。

app \助手\ 包含辅助文件。Helper文件是ruby文件,用于定义不属于模型但过于冗长而不能嵌入视图的逻辑。
模型应用\ \ 包含模型文件。

模型文件是ruby文件。它们从ActiveRecord继承了大部分的功能,但是你也可以通过编写自己的方法来构建这些功能。

app \ views \ 包含存在的每个控制器文件的子文件夹。

例如,如果有一个名为posts_controller的控制器。Rb中会有一个视图子文件夹叫做posts。

公共图像\ \ 包含属于您的网站的任何图像文件。
公众\ javascripts \ 包含您的网站所使用的任何javascript文件。

公众\ \样式表 包含属于您的网站的任何CSS文件。
db \迁移 包含“迁移”文件,用于将数据库从一种状态迁移到另一种状态(稍后详细介绍)

应用程序设计

为了创建一个Rails应用程序,您必须考虑组成数据结构如何相互关联。你可以进行不同层次的设计,但是,为了保持事情简单,我们将保持事情简单。

你在设计一个博客应用程序;你应该从哪里开始呢?

首先,拿起一支笔和一些纸,写一小段关于您的应用程序是什么以及它应该做什么。当你完成后,高亮/下划线名词将信息存储到数据库中所需要的。对于我们简单的博客应用程序,一句话就足够了:

“我的应用程序是一个web日志(博客).

它将允许我写作的帖子和将允许评论在他们身上。”

因此,我们需要针对帖子、人(或用户)和评论的模型。同样,为了让事情变得简单,我们可以忽略人员/用户。所以我们需要为帖子和评论都建立一个模型。

接下来,您需要考虑模型之间应该如何相互关联。

Rails中最常见的关系定义如下:

  • 一对一的
  • 一对多
  • 多对多

你必须问自己给定模型之间的关系是什么。贴子和评论-一个给定的贴子有很多注释和注释属于一个帖子。这个逻辑表明一对多的关系。

我们稍后会讲到关系。

脚手架

脚手架可以用于为您的客户建立快速原型/模型。它们对于学习如何使用Rails也非常有用。在一个简单的命令中,你可以创建一个模型,控制器和几个视图,有效地建立一个大块的功能一下子。

使用脚手架创建Posts

要为post创建相关的脚手架文件,你可以用一个命令来生成它们:

> ruby脚本/generate scaffold post title:字符串主体:文本

这个命令创建很多的文件。它为post创建一个名为posts_controller的控制器。Rb和一个叫post的模型。Rb(注意,不是复数)。它还在views文件夹中创建了名为posts的子文件夹。

它包含四个文件index.html。edit.html erb。show.html erb。new.html.erb erb。你也可能已经注意到,我们已经指定了所需的字段,即标题和正文,以及它们的类型分别为" string "和" text "。

使用脚手架创建注释

类似地,要为注释创建相关的脚手架,运行以下命令:

> ruby脚本/生成脚手架注释名称:字符串主体:文本post:引用

在这个命令的末尾,您可能已经注意到文本“post:references”。这将用于创建外键字段,用于链接到posts表的主键。

关联帖子和评论模型

现在您已经有了两个模型,您需要在它们之间创建一个关系链接。为此,您需要向post和comment模型添加一行代码,如下所示:

post.rb

类Post < ActiveRecord::Basehas_many:评论结束

comment.rb

类Comment < ActiveRecord::Basebelongs_to:文章结束

这使得查找相关记录非常容易。稍后,当我们需要显示与给定帖子相关的评论时,您将看到这是多么容易。

如何创建数据库和表?

现在您已经创建了模型,您需要创建数据库,然后创建表来保存关于帖子和评论的信息。

要创建数据库,您需要将用户名和密码添加到数据库中。Yml文件,类似于下面。

开发:适配器:mysql编码:utf8重新连接:false数据库:myblog_development pool: 5用户名:密码:yourrootpassword主持人:localhost

修改数据库后。使用数据库登录详细信息的Yml文件,您需要从命令提示符运行以下rake recommend。同时,请确保先将当前目录设置为项目文件夹:

> CD myblog > rake db:create

现在应该创建数据库了。

数据库迁移

在Rails中,迁移是指将数据库从一种状态迁移到另一种状态的过程。以下是一些将数据库从一种状态迁移到另一种状态的例子:

  • 创建表
  • 删除表
  • 添加新字段
  • 删除字段

当您使用脚手架为帖子和评论创建两个模型时,会自动创建几个文件。特别地,迁移文件是在db\migrate文件夹中创建的。这些文件用于为帖子和评论模型创建表。

要使用迁移文件构建表,应该运行以下命令:

> rake db:迁移

现在应该创建“posts”和“comments”表。

让我们看看情况如何!

好了,让我们启动Webrick, Rails内置web服务器,看看情况如何。

> ruby脚本/服务器

现在在你最喜欢的浏览器上浏览到http://localhost:3000/posts,你应该会看到一个类似于下面截图的屏幕。默认情况下,这个URL请求将控制转发给posts控制器中的“index”方法,然后是“index.html”方法。Erb”视图被渲染。

让我们看看情况如何!

如果您点击“New Post”链接(突出显示),您将被引导到URL http://localhost:3000/posts/new,在那里您将看到一个创建新文章的表单。

这个URL请求调用posts控制器中的“new”方法,然后调用“new.html”方法。Erb”视图被渲染。

让我们看看情况如何!

点击“创建”按钮保存您的文章,这将引导您到URL, http://localhost:3000/posts/show/1,显示文章的详细信息。这个URL请求调用posts控制器中的“show”方法。它还将一个参数“1”传递给show方法。

最后,它呈现“show.html”。erb”视图。

让我们看看情况如何!

建立一个主页

您可能希望使用根URL (http://localhost:3000)将用户导向您的帖子,从而有效地使其成为您的主页。要做到这一点,首先需要删除public/index.html文件。

你需要做的第二件事是在你的配置\routes中设置一个路由。rb文件。在记事本(或您最喜欢的编辑器)中打开此文件,并使用map在末尾添加新行。根,如下所示。

ActionController::路由::路线。画|地图|地图。资源:评论地图。资源:帖子地图。连接:控制器/动作/:id的地图。连接”:控制器/动作/:id。:format'地图。Root:controller => "post"结束

请注意:为了清晰和简洁,这个路由文件去掉了所有注释行。

有关路由的更多信息,请参考Rails API文档

允许用户评论!

修改路由

在对视图进行任何更改之前,您需要在“posts”中确定“comments”路由的范围。修改路线。Rb文件看起来像下面的代码。

ActionController::路由::路线。画地图| |地图。资源:posts,:has_many =>:comments地图。连接:控制器/动作/:id的地图。连接”:控制器/动作/:id。:格式的地图。根:controller => "post" end

修改视图

现在修改视图/posts/show.html。Erb文件与下面的代码相同。在这里,我们呈现文章,显示任何相关评论,然后显示一个添加新评论的表单。

标题: <%=h @post。标题%>

Body: <%=h @post。身体% > < / p > < h2 >评论< / h2 > < % c @post.comments.each做| | % > < p > < b > < % = h c.name % >说:< / b > < br / > < % = time_ago_in_words (c.created_at) % >前< / p > < p > < % = h c.body % > < / p > < %结束% > < % form_for [@post、评论。f新)| | % > < p > < % = f.label:名字,“作者”% > < br / > < % = f.text_field:名称% > < br / > < % = f.label:身体,“评论描述“% > < br / > < % = f.text_area:身体% > < / p > < p > < % = f.submit“添加评论”% > < / p > < % % >结束

修改注释控制器

删除在comments_controller中自动创建的所有方法。添加一个名为“create”的新方法,如下面的代码所示。这只是在“comments”表中创建一个与给定的帖子相关的评论记录。

类CommentsController < ApplicationController def create @post = Post.find(params[:post_id]) @comment = @post.comments.create!(params[:comment]) redirect_to @post end结束

刷新浏览器(确保您的服务器在命令提示符下仍在运行)。

你应该得到类似于下面截图的东西。

允许用户评论!

现在您可以尝试添加注释。输入评论并点击“添加评论”。新的评论应该出现在帖子下面,如下所示。

允许用户评论!

总结

你学到了什么?

您已经学习了应用程序设计背后的基本概念,并将设计转化为一个工作的Rails web应用程序。在学习Rails时,至少对应用程序设计有一个基本的了解是很重要的,也是成功的关键。

如何改善你的博客?

我们在本教程中所介绍的内容刚好能够传达信息。你可以做很多事情来改善现状。

添加一些CSS或使用一些AJAX使程序运行更流畅,这只是一些建议。

下一个什么?

尝试学习MVC,这样你就能真正理解它背后的概念。尝试理解Rails和MVC的优点;这将激励您学习框架。

然而,虽然阅读理论是好的,但您真的需要沉浸在其中并玩转框架。下载和安装Rails迈出迈向更高效、更愉快的网页开发的第一步。

相关内容

关于作者

菲尔·麦克卢尔是来自北爱尔兰贝尔法斯特的软件开发人员。他的主要兴趣是软件架构、设计模式以及如何将这些应用到web开发中。菲尔博客theRailWorld.com

在推特上关注他

WebFX职业

加入我们的使命,为全球的企业提供业界领先的数字营销服务,同时建立您的个人知识和个人成长。

我们招聘! 视图30 +职位空缺!