rails手脚架(scaffold)功能
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)功能的更多相关文章
- rails scaffold生成的crud显示自定义的列名
1. 访问 rails i18n 插件的官方网站 ,查看信息http://guides.rubyonrails.org/i18n.html2. 在Gemfile 中加入 测试rails4.2.1不用 ...
- rails generate model/resource/scaffold的区别
If you’re just learning Ruby on Rails, you may be confused as to when to generate individual models, ...
- Windows下: RubyMine + Ruby On Rails + mysql 搭建开发环境
最近在接手一个手机项目.在搭建环境的过程中,遇到了一些问题,在下文中已做记录,并奉上个人的解决方案. 开发环境 win2003 ; JetBrains RubyMine6.3.3 1. 下载最新版 ...
- 通过Ruby On Rails 框架来更好的理解MVC框架
通过Ruby On Rails 框架来更好的理解MVC框架 1.背景 因为我在学习软件工程课程的时候,对于 MVC 框架理解不太深入,只是在理论层面上掌握,但是不知道如何在开发中使用 MVC ...
- Ruby on Raisl应用(一):在Rails上配置Mongoid+Mongodb
一. 概述 最近考虑用ruby on rails 搭建一套Blog系统,前端考虑用Bootstrap,数据库用Mongodb.由于之前没有相关应用经验.先记录下整个项目过程. 现有资源: Mac 笔记 ...
- Ruby on Rails Tutorial 第二章 之 用户资源&MVC&REST
说明:用户资源包括用户数据模型和这个模型相关的Web页面. 1.用户数据模型如下: 2.使用Rails内置的脚手架生成用户资源中,执行如下所示命令: $ rails generate scaffold ...
- ubuntu14.04使用rails连接mysql数据库
rails自带的sqlite3各方面都不错,但是免费版缺少一个致命功能:加密码!虽说第三方有编译好的二进制版的加密版,但咱先不折腾鸟;直接上mysql吧. ubuntu安装mysql非常简单,先不聊; ...
- 如何为Rails作贡献:例增加rich_text field generators
如何为Rails作贡献 例增加rich_text field generators 下载https://github.com/rails/rails 打开atom,在 rails/railties/l ...
- (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 ...
随机推荐
- Java 的初始化顺序
初始化顺序: 1.将对象内存空间初始化为二进制0(所有的数据成员被设为默认值) 2.如果该类有基类则初始化其基类(调用默认基类构造器,也可在子类构造器中指定调用基类的某个构造器) 3. 静态成员和静态 ...
- elasticsearch SpanNearQuery inOrder参数
一直没有注意还有一个inOrder参数: public SpanNearQuery(SpanQuery[] clauses, int slop, boolean inOrder) When inOrd ...
- rest_framework 权限流程
权限流程 权限流程与认证流程非常相似,只是后续操作稍有不同 当用户访问是 首先执行dispatch函数,当执行当第二部时: #2.处理版本信息 处理认证信息 处理权限信息 对用户的访问频率进行限制 s ...
- 如何获取(GET)一杯咖啡——星巴克REST案例分析
英文原文:How to GET a Cup of Coffee 我们已习惯于在大型中间件平台(比如那些实现CORBA.Web服务协议栈和J2EE的平台)之上构建分布式系统了.在这篇文章里,我们将采取另 ...
- 让IE6/IE7/IE8支持CSS3属性的8种方法介绍
我们都知道,IE浏览器暂不支持CSS3的一些属性.国外的工程师们,不安于此现状,他们总是尽量使用一些手段使IE浏览器也能支持CSS3属性,我觉得这些都是很有意义,很有价值的工作,可以推动整个技术领域的 ...
- 利用navigator对象判断设备类型
function getTerminalType() { //获取navigator对象 var o = navigator.userAgent, t = ""; if (/\bi ...
- HDU 1015 Safecracker【数值型DFS】
Safecracker Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- Spfa+DP【p2149】[SDOI2009]Elaxia的路线
Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. Elaxia和w**每天都要奔波于宿舍和实验室之间 ...
- DNS隧道工具dns2tcp
DNS隧道工具dns2tcp 在很多网络环境中,防火墙会限制出站流量,主机往往只能访问外网主机有限的几个端口,如DNS的53端口.这时,就可以通过DNS请求和响应机制,建立通信隧道.Kali Li ...
- 【线段树】bzoj3038 上帝造题的七分钟2 / bzoj3211 花神游历各国
暴力修改,记录一段是否全部为1或0,若全是了,则不再修改. 注意3211一定要判是否为0,否则会T得惨无人道. #include<cstdio> #include<cmath> ...