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

1: 创建一个应用

 rails new scaffoldapp
cd scaffoldapp
rails s

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

2: 创建一个名为blog的Scaffold

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

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

数据库迁移:

rake db:migrate

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

3:加入图片上传功能

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

更新Gemfile

gem 'carrierwave'
bundle install
rails generate uploader Picture

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

mount_uploader :picture, PictureUploader

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

<%= f.text_field :picture %>

将它改成:

<%= f.file_field :picture %>

并将这一行:

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

改成:

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

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

<%= @blog.picture %>

改为

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

%>

4.改动样式

打开/app/controllers/blogs_controller.rb

新建一个方法

 def list
@blogs = Blog.all
end

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

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

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

root 'blogs#list'

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

body{

    padding: 0px;
margin:0px;
width:1000px;
margin:0 auto;
}
.bgheader{
margin-top: -20px;
height: 80px;
background-color: #E9F2E8;
}
.bgheader h1{
color: #238A2A;
padding-top: 15px;
padding-left: 20px;
} .bgtitle a:link,.bgtitle a:visited{
color: #0080FF;
}
#blog_title{
width:300px;
height:20px;
}
#blog_content{
width:480px;
height:300px;
}
.bgcontainer{
width:600px;
}
.bgshow{
width:800px;
}

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

<div class="bgshow">
<p id="notice"><%= notice %></p> <h2>
<%= @blog.title %>
</h2>
<%= @blog.content %>
<hr>
<%= image_tag(@blog.picture_url, :width => 300) if @blog.picture.present? %>
<hr>
<%= link_to 'Edit', edit_blog_path(@blog) %> |
<%= link_to 'Back', blogs_path %>
</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. 【C++】继承时构造函数和析构函数

    1. 顺序 先调用基类的构造函数,再调用派生类构造函数.析构顺序相反. 2. 构造函数 派生类 不用初始化列表调用基类构造函数->调用基类的默认构造函数 派生类 使用初始化列表调用基类带参构造函 ...

  2. Qt笔记——Event

    #ifndef MYBUTTON_H #define MYBUTTON_H #include <QPushButton> class MyButton : public QPushButt ...

  3. Windows server 2012 R2 环境搭建

    由于系统升级,现在在用dotnetcore开发项目,但是尴尬的是服务器是windows server2012 R2的版本,这个版本不能执行dotnetcore. 然后问题来了,运行环境搭建. 第一步自 ...

  4. 部署web应用到虚拟主机的三种方式

    方式一:            在 [tomcat]/conf/server.xml 文件中的<Engine>标签下的<Host>标签内部, 添加一个 <Context ...

  5. 关于 hibernate 中 hashCode爆栈的探讨

    今天在 hibernate 的一对多映射测试 merge 方法时,出现了以下的异常: 我们可以看到,这里的错误有非常明显的重复性,很显然是做了间接递归,并且递归的调用是 hashMap 中的hashC ...

  6. lca最短公共祖先模板(hdu2586)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 #include<iostream> #include<cstdio> ...

  7. 51nod 最长公共子序列问题(动态规划)(LCS)(递归)

    最长公共子序列问题 输入 第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000) 输出 输出最长的子序列,如果有多个,随意输出1个. 输入示例 abcicba abdkscab 输 ...

  8. Dumpzilla工具第615行bug的解决办法

    Dumpzilla工具第615行bug的解决办法   在Dumpzilla使用选项frequency时,会提示SQL语法错误.这是由于其中SQL语句编写错误.需要将615行中: where url l ...

  9. [CF819B]Mister B and PR Shifts

    题意:定义一个排列$p_{1\cdots n}$的“偏移量”$D=\sum _{i=1}^n\left|p_i-i\right|$ 求它所有的轮换排列中偏移量最小的是多少,要求输出轮换序数 暴力就是求 ...

  10. [BZOJ4530]大融合

    LCT维护子树信息 维护两个子树信息,$vinf_x$表示节点$x$的所有轻儿子子树信息,$inf_x$表示以$x$为根的LCT子树(包含虚边)的信息 对$vinf$: access时,断开$x$的原 ...