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

WebFX总统。Bill在互联网营销行业有超过25年的经验,专门从事SEO, UX,信息架构,营销自动化等。William在Shippensburg和MIT的科学计算和教育背景为cloudfx和WebFX的其他关键研究和开发项目的营销提供了基础。

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

博客应用程序

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

Ruby on Rails简介

RubyonRails是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它包含所有相关的项目文件夹。

重要文件和文件夹

文件/文件夹 意图
config\database.yml 这个文件是一个YAML(意思是- YAML不是标记语言)文件。它包含关于DBMS提供者的详细信息和DBMS的身份验证详细信息。
配置\ routes.rb 这是一个ruby文件。它允许您配置如何路由HTTP请求。
应用程序控制器\ \ 包含控制器文件。控制器是ruby文件。
app \助手\ 包含辅助文件。Helper文件是用来定义不属于模型但过于冗长而无法嵌入视图的逻辑的ruby文件。
应用程序\模型\ 包含模型文件。模型文件是ruby文件。它们继承了ActiveRecord的大部分功能,但你也可以通过编写自己的方法来构建这个功能。
应用程序\视图\ 包含存在的每个控制器文件的子文件夹。例如,如果有一个名为posts_controller的控制器。会有一个名为“posts”的视图子文件夹。
公共\图像\ 包含属于您的网站的任何图像文件。
公共\java脚本\ 包含你的网站使用的任何javascript文件。
公共\样式表\ 包含任何属于您的网站的CSS文件。
数据库\迁移 包含“迁移”文件,用于将数据库从一种状态迁移到另一种状态(稍后对此有更多介绍)

应用程序设计

应用程序的设计。

为了创建Rails应用程序,您必须考虑组成数据结构之间的关系。你可以进行不同层次的设计,然而,为了保持简单,我们应该……保持简单。

你在设计一个博客应用;你应该从哪里开始呢?首先,拿起笔和纸,写一小段关于你的申请是什么和它应该做什么。在你完成之后,突出/下划线名词将信息存储到数据库中所需要的。对于我们简单的博客应用程序,一句话就足够了:

“我的申请是一个网络日志(博客).它能让我写字的帖子并将允许议论在他们身上。”

因此,我们需要针对帖子、人物(或用户)和评论的模型。再次强调,为了保持事情简单,我们可以忘记人/用户。因此,我们需要为帖子和评论都建立一个模型。

接下来,您将需要考虑这些模型应该如何相互关联。Rails中最常见的关系定义如下:

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

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

脚手架

脚手架

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

使用脚手架创建帖子

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

> ruby脚本/生成脚手架post title:string body:text

此命令创建太多了的文件。它为posts创建一个名为posts_controller的控制器。Rb和一个叫做post的模型。Rb(注意,不是复数)。它还在views文件夹中创建了一个名为posts的子文件夹。它包含四个文件,index.html。edit.html erb。show.html erb。new.html.erb erb。你可能也注意到,我们已经指定了必需的字段,如标题和正文,以及它们的类型分别为“string”和“text”。

使用Scaffolding创建注释

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

>ruby脚本/generate scaffold注释名称:字符串体:text post:references

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

关联发布和评论模型

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

post.rb

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

comment.rb

类注释< ActiveRecord::Basebelongs_to:文章结束

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

如何创建数据库和表?

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

要创建数据库,您需要将用户名和密码添加到数据库中。Yml文件,如下所示。

开发:适配器:mysql编码:utf8重新连接:false database: myblog_development pool: 5 username:密码:yourrootpassword主持人:localhost

数据库修改完成后。您需要从命令提示符运行以下rake推荐。另外,一定要先将当前目录设置为项目文件夹:

> CD myblog > rake db:create

现在应该创建了数据库。

数据库迁移

在Rails中,迁移是将数据库从一个状态移动到另一个状态的过程的名称。将数据库从一种状态迁移到另一种状态的一些示例包括:

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

当您使用scaffold为文章和评论创建两个模型时,会自动创建几个文件。特别是,迁移文件是在db\migrate文件夹中创建的。这些文件用于为文章和评论模型创建表。要使用迁移文件构建表,您应该运行以下命令:

> rake db:迁移

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

让我们看看事情是怎样的!

好的,让我们启动Webrick, Rails内置的web服务器,看看效果如何。

> ruby脚本/服务器

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

让我们看看情况如何!

如果你点击“新文章”链接,高亮显示,你会被导向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)将用户引导到您的文章,从而有效地使其成为您的主页。要做到这一点,首先需要删除公共/index.html文件。

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

ActionController::Routing::Routes.draw do | map | map.resources:comments map.resources:posts map.connect':controller/:action/:id'map.connect':controller/:action/:id.:format'地图。Root:controller => "post"结束

请注意:为了清晰和简洁,此路由文件已删除所有注释行。有关路由的更多信息,请尝试Rails API文档

允许用户评论!

允许用户评论!

修改路由

在对视图进行任何更改之前,您需要在“posts”中确定“comments”路由的范围。修改路线。如下面代码所示。

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

修改视图

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

Title: <%=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”表中创建一个与给定的文章相关的评论记录。

class 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在推特上关注他