使用Ruby on Rails创建一个博客应用程序

码农日志 2019-08-20 ⋅ 14 阅读

简介

Ruby on Rails(简称Rails)是一个基于Ruby语言的开发框架,旨在轻松构建Web应用程序。它采用了MVC(Model-View-Controller)设计模式,提供了丰富的框架和工具,使开发人员能够快速构建高效、可扩展的应用程序。

本教程将向您展示如何使用Ruby on Rails创建一个简单的博客应用程序。我们将实现用户发布、编辑和删除文章的功能,以及其他常见的博客功能。

环境准备

首先,确保您的系统已经安装了以下软件:

  • Ruby(推荐版本:2.7.1)
  • Rails(推荐版本:6.0.3)

您可以通过在终端中运行以下命令来检查这些软件是否已正确安装:

ruby -v
rails -v

如果没有问题,您将看到相关软件的版本信息。

创建新的Rails应用程序

首先,让我们创建一个新的Rails应用程序。在终端中运行以下命令:

rails new blog
cd blog

这将创建一个名为“blog”的目录,并将您的终端导航到该目录。

创建文章模型和视图

接下来,我们将创建一个名为“Article”的模型来表示博客文章。在终端中运行以下命令:

rails generate model Article title:string content:text

这将为我们生成一个Article模型,并创建title和content两个字段。

然后,运行数据库迁移命令以创建实际的数据表:

rails db:migrate

创建文章控制器

现在,我们将创建一个Articles控制器来处理与文章相关的操作。在终端中运行以下命令:

rails generate controller Articles

这将为我们生成一个Articles控制器,并创建相关的视图和操作。

编写文章视图和路由

在app/views/articles目录下,创建一个名为“index.html.erb”的文件,并添加以下内容:

<h1>文章列表</h1>

<ul>
  <% @articles.each do |article| %>
    <li>
      <h2><%= article.title %></h2>
      <p><%= article.content %></p>
    </li>
  <% end %>
</ul>

这将创建一个简单的文章列表,显示每篇文章的标题和内容。

接下来,在config/routes.rb文件中添加以下路由:

Rails.application.routes.draw do
  resources :articles

  root to: 'articles#index'
end

这将为我们创建了一个文章资源的路由,并将根路径重定向到文章列表页面。

更新Articles控制器和模型

打开app/controllers/articles_controller.rb文件,更新其内容如下:

class ArticlesController < ApplicationController
  before_action :set_article, only: [:show, :edit, :update, :destroy]

  def index
    @articles = Article.all
  end

  def show
  end

  def new
    @article = Article.new
  end

  def create
    @article = Article.new(article_params)

    if @article.save
      redirect_to @article, notice: '文章创建成功!'
    else
      render :new
    end
  end

  def edit
  end

  def update
    if @article.update(article_params)
      redirect_to @article, notice: '文章更新成功!'
    else
      render :edit
    end
  end

  def destroy
    @article.destroy
    redirect_to articles_url, notice: '文章删除成功!'
  end

  private

  def set_article
    @article = Article.find(params[:id])
  end

  def article_params
    params.require(:article).permit(:title, :content)
  end
end

这里我们对Articles控制器进行了修改,加入了一些操作来处理文章的创建、编辑和删除。

打开app/models/article.rb文件,添加以下内容:

class Article < ApplicationRecord
  validates :title, presence: true
  validates :content, presence: true
end

这将为Article模型添加验证,确保文章的标题和内容不能为空。

更新视图

创建一个名为“new.html.erb”的文件,在app/views/articles目录下,添加以下内容:

<h1>创建新文章</h1>

<%= form_with(model: @article, local: true) do |form| %>
  <% if @article.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@article.errors.count, "错误") %>导致文章无法保存:</h2>

      <ul>
        <% @article.errors.full_messages.each do |message| %>
          <li><%= message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= form.label :title, '标题' %>
    <%= form.text_field :title, class: 'form-control' %>
  </div>

  <div class="field">
    <%= form.label :content, '内容' %>
    <%= form.text_area :content, class: 'form-control' %>
  </div>

  <div class="actions">
    <%= form.submit '保存', class: 'btn btn-primary' %>
  </div>
<% end %>

这将创建一个表单,用于创建新的文章。它还处理了表单验证错误的显示。

创建一个名为“edit.html.erb”的文件,在app/views/articles目录下,添加以下内容:

<h1>编辑文章</h1>

<%= form_with(model: @article, local: true) do |form| %>
  <% if @article.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@article.errors.count, "错误") %>导致文章无法保存:</h2>

      <ul>
        <% @article.errors.full_messages.each do |message| %>
          <li><%= message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= form.label :title, '标题' %>
    <%= form.text_field :title, class: 'form-control' %>
  </div>

  <div class="field">
    <%= form.label :content, '内容' %>
    <%= form.text_area :content, class: 'form-control' %>
  </div>

  <div class="actions">
    <%= form.submit '保存', class: 'btn btn-primary' %>
  </div>
<% end %>

这将创建一个表单,用于编辑现有的文章。它也处理了表单验证错误的显示。

修改app/views/articles/show.html.erb文件,添加以下内容:

<h1><%= @article.title %></h1>

<p><%= @article.content %></p>

<p>
  <%= link_to '编辑', edit_article_path(@article) %> |
  <%= link_to '删除', article_path(@article), method: :delete, data: { confirm: '确定要删除这篇文章吗?' } %>
</p>

<p>
  <%= link_to '返回文章列表', articles_path %>
</p>

这将为我们显示单个文章的详细信息,并提供编辑和删除文章的链接。

运行应用程序

现在,让我们在终端中运行以下命令启动我们的Rails应用程序:

rails server

然后,在浏览器中访问http://localhost:3000,您应该能够看到我们的博客应用程序的首页。

点击“创建新文章”链接,您将被带到创建文章的页面。在那里,您可以输入文章标题和内容,并点击“保存”按钮来创建一篇新文章。

在文章列表页面,您将看到我们刚才创建的文章。

您可以点击文章标题进入单独的文章页面,您还可以在那里编辑或删除文章。

总结

在本教程中,我们学习了如何使用Ruby on Rails创建一个简单的博客应用程序。我们了解了如何创建模型、控制器和视图,以及如何处理文章的创建、编辑和删除操作。

这只是一个最基本的博客应用程序,还有很多其他功能可以进一步扩展和改进,如用户认证、评论功能、动态路由等等。希望本教程能为您提供一个入门Rails开发的基础,并激发您进一步探索的兴趣。


全部评论: 0

    我有话说: