scaffold是一个高速开发rails应用的代码框架。能够使用一条命令实现CRUD操作。

1: 创建一个应用

  1. rails new scaffoldapp
  2. cd scaffoldapp
  3. rails s

在浏览器中打开http://localhost:3000/

2: 创建一个名为blog的Scaffold

使用rails的scaffold创建模版。在此基础上进行添加、删除、改动、查询(CRUD)操作.

  1. rails g scaffold blog title:string content:text picture:string

数据库迁移:

  1. rake db:migrate

浏览器中訪问:http://localhost:3000/blogs

3:加入图片上传功能

能够參考我的上一篇博客rails中使用carrierwave上传图片

更新Gemfile

  1. gem 'carrierwave'
  2. bundle install
  3. rails generate uploader Picture

改动/app/models/blog.rb,挂载picture属性

  1. mount_uploader :picture, PictureUploader

打开 app/views/ideas/_form.html.erb ,找到这一行:

  1. <%= f.text_field :picture %>

将它改成:

  1. <%= f.file_field :picture %>

并将这一行:

  1. <%= form_for(@blog) do |f| %>

改成:

  1. <%= form_for(@blog,:html => {:multipart => true}) do |f| %>

打开 app/views/ideas/show.html.erb 并将

  1. <%= @blog.picture %>

改为

  1. <%= image_tag(@blog.picture_url, :width => 300) if @blog.picture.present?
  2. %>

4.改动样式

打开/app/controllers/blogs_controller.rb

新建一个方法

  1. def list
  2. @blogs = Blog.all
  3. end

在/app/views/blogs/文件夹下新建list.html.erb

  1. <div class="bgheader">
  2. <h1>My Blog</h1>
  3. </div>
  4. <% @blogs.each do |blog| %>
  5. <h2 class="bgtitle"><%=link_to blog.title,blog %></h2>
  6. <p><%= blog.content[0,150]%></p>
  7. <% end %>

改动/config/routes.rb,加入:

  1. root 'blogs#list'

添加/app/assets/stylesheets/application.css

  1. body{
  2. padding: 0px;
  3. margin:0px;
  4. width:1000px;
  5. margin:0 auto;
  6. }
  7. .bgheader{
  8. margin-top: -20px;
  9. height: 80px;
  10. background-color: #E9F2E8;
  11. }
  12. .bgheader h1{
  13. color: #238A2A;
  14. padding-top: 15px;
  15. padding-left: 20px;
  16. }
  17. .bgtitle a:link,.bgtitle a:visited{
  18. color: #0080FF;
  19. }
  20. #blog_title{
  21. width:300px;
  22. height:20px;
  23. }
  24. #blog_content{
  25. width:480px;
  26. height:300px;
  27. }
  28. .bgcontainer{
  29. width:600px;
  30. }
  31. .bgshow{
  32. width:800px;
  33. }

改动/app/views/blogs/show.html.erb

  1. <div class="bgshow">
  2. <p id="notice"><%= notice %></p>
  3. <h2>
  4. <%= @blog.title %>
  5. </h2>
  6. <%= @blog.content %>
  7. <hr>
  8. <%= image_tag(@blog.picture_url, :width => 300) if @blog.picture.present? %>
  9. <hr>
  10. <%= link_to 'Edit', edit_blog_path(@blog) %> |
  11. <%= link_to 'Back', blogs_path %>
  12. </div>

效果

首页



详情页

rails手脚架(scaffold)功能的更多相关文章

  1. rails scaffold生成的crud显示自定义的列名

    1. 访问 rails i18n 插件的官方网站 ,查看信息http://guides.rubyonrails.org/i18n.html2. 在Gemfile 中加入  测试rails4.2.1不用 ...

  2. rails generate model/resource/scaffold的区别

    If you’re just learning Ruby on Rails, you may be confused as to when to generate individual models, ...

  3. Windows下: RubyMine + Ruby On Rails + mysql 搭建开发环境

    最近在接手一个手机项目.在搭建环境的过程中,遇到了一些问题,在下文中已做记录,并奉上个人的解决方案. 开发环境 win2003 ;  JetBrains RubyMine6.3.3 1.  下载最新版 ...

  4. 通过Ruby On Rails 框架来更好的理解MVC框架

    通过Ruby On Rails 框架来更好的理解MVC框架   1.背景    因为我在学习软件工程课程的时候,对于 MVC 框架理解不太深入,只是在理论层面上掌握,但是不知道如何在开发中使用 MVC ...

  5. Ruby on Raisl应用(一):在Rails上配置Mongoid+Mongodb

    一. 概述 最近考虑用ruby on rails 搭建一套Blog系统,前端考虑用Bootstrap,数据库用Mongodb.由于之前没有相关应用经验.先记录下整个项目过程. 现有资源: Mac 笔记 ...

  6. Ruby on Rails Tutorial 第二章 之 用户资源&MVC&REST

    说明:用户资源包括用户数据模型和这个模型相关的Web页面. 1.用户数据模型如下: 2.使用Rails内置的脚手架生成用户资源中,执行如下所示命令: $ rails generate scaffold ...

  7. ubuntu14.04使用rails连接mysql数据库

    rails自带的sqlite3各方面都不错,但是免费版缺少一个致命功能:加密码!虽说第三方有编译好的二进制版的加密版,但咱先不折腾鸟;直接上mysql吧. ubuntu安装mysql非常简单,先不聊; ...

  8. 如何为Rails作贡献:例增加rich_text field generators

    如何为Rails作贡献 例增加rich_text field generators 下载https://github.com/rails/rails 打开atom,在 rails/railties/l ...

  9. (Go rails)使用Rescue_from(ActiveSupport:Rescuable::ClassMethods)来解决404(ActiveRecord::RecordNotFound)❌

    https://gorails.com/episodes/handle-404-using-rescue_from?autoplay=1 我的git: https://github.com/chent ...

随机推荐

  1. 转怎么让VI支持中文显示

    https://blog.csdn.net/kayneo/article/details/72957475

  2. yii2中判断数据表是否存在数据库中(原创)

    分为两步: 第一步,找出数据库中所有表名,表名得到的是二维数组. 第二步,判断表名是否存在二维数组中 下面就贴我的代码咯. $table_name =‘table’; $juge = $handle- ...

  3. java网络通信:TCP协议

    面试的时候,面试官由于需要考察一个面试人对于网络编程的熟悉程度,往往会考察学生对于TCP.HTTP.UDP.这些常见的网络编程当中的协议的了解程度,而TCP协议则是首当其冲的,作为进程之间通信常用的一 ...

  4. 潜伏者(noip09年t1)解题报告 C++

    题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原 ...

  5. Linux命令之crontab

    crontab [-u user] file crontab [-u user] [-l | -r | -e] [-i] [-s] crontab命令被用来提交和管理用户需要周期性执行的任务,与win ...

  6. AtCoder - 2061 Tree Restoring

    Problem Statement Aoki loves numerical sequences and trees. One day, Takahashi gave him an integer s ...

  7. [SPOJ]DIVCNT3

    别人写的讲得挺好的博客 洲阁筛,一种快速求积性函数前缀和的算法 求$\sum\limits_{i=1}^nF(i)$,其中$F(x)$是积性函数,并且$F(p^c)$是关于$p$的低阶多项式 我们把$ ...

  8. [CF321C]Ciel the Commander

    题目大意: 给你一棵n个结点的树,给每个结点分级,最高为'A',最低为'Z'. 尝试构造一种分级方案,使得任意两个相同级别的结点路径上至少有一个更高级的结点. 思路: 贪心+树上点分. 递归处理每一棵 ...

  9. 6.4(java学习笔记)转换流

    一.乱码问题 我们来看下列例子: public class ConStream { //当前平台默认采用GBK public static void main(String[] args){ Stri ...

  10. 求小于10000的素数的个数 Exercise06_10

    /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:求小于10000的素数的个数 * */ public class Exercise06_10 { public static ...