rails初体验

很久没有来更新了,因为最近自己在新浪云上面搭建了个wordpress玩,但是还没有弄上markdown的插件,所以还是现在这里写,那边再复制过去。

  • <a href="http://cword.sinaapp.com">我的wordprss地址</a>

以下是正题


为什么会有rails

  • 其实一开始是前端入门的,后来写着写着,刚好学校网络中心需要PHP开发,然后就开始入了后端的坑,然后不知道为什么写着写着对PHP并不是特别喜欢,一个是现在的基础教程真的不友好,随手一搜都是PHP4的教程,现在都出PHP7了,还有一个就是很混乱,面向对象一种方式,面向过程又一种方式,一上来就迷迷糊糊的,然后想着有没有其他后台语言可以学
  • 然后在udacity看jquery教程的时候,看到他们在ajax做交互的时候使用python写的,然后我又知道原来有django的web开发框架,然后又知道railis,对于rails的快速原型开发很有好感,现在打算用rails写一个电商网站

rails初体验

  • 服务器部署略过,由于是学生党没钱换mac,所以是在linux下部署的ruby和rails的开发环境,网上教程很多,我是参考ruby china 的wiki部署的
  • 先到图书馆借了本rails学习手册,虽然里面的代码很久了,但是多多少少也有启发作用,等自己做到一定的成果以后,再上网入手经典rails开发书,继续开发

rails上线

其实rubychina上面的会更全,我之所以写来是为了帮自己理清思路和加深印象
  • $ rails new blog
  • 这个命令会在文件夹 blog 中新建一个 Rails 程序,然后执行 bundle install命令安装 Gemfile 中列出的 gem。
  • 执行 rails new -h
    可以查看新程序生成器的所有命令行选项。
  • $ cd blog

blog 文件夹中有很多自动生成的文件和文件夹,组成一个 Rails 程序。本文大部分时间都花在 app文件夹上。下面简单介绍默认生成的文件和文件夹的作用:

文件/文件夹 作用
app/ 存放程序的控制器、模型、视图、帮助方法、邮件和静态资源文件。本文主要关注的是这个文件夹。
bin/ 存放运行程序的 rails脚本,以及其他用来部署或运行程序的脚本。
config/ 设置程序的路由,数据库等。详情参阅“设置 Rails 程序”一文。
config.ru 基于 Rack 服务器的程序设置,用来启动程序。
db/ 存放当前数据库的模式,以及数据库迁移文件。
Gemfile, Gemfile.lock 这两个文件用来指定程序所需的 gem 依赖件,用于 Bundler gem。关于 Bundler 的详细介绍,请访问 Bundler 官网
lib/ 程序的扩展模块。
log/ 程序的日志文件。
public/ 唯一对外开放的文件夹,存放静态文件和编译后的资源文件。
Rakefile 保存并加载可在命令行中执行的任务。任务在 Rails 的各组件中定义。如果想添加自己的任务,不要修改这个文件,把任务保存在 lib/tasks文件夹中。
README.rdoc 程序的简单说明。你应该修改这个文件,告诉其他人这个程序的作用,如何安装等。
test/ 单元测试,固件等测试用文件。详情参阅“测试 Rails 程序”一文。
tmp/ 临时文件,例如缓存,PID,会话文件。
vendor/ 存放第三方代码。经常用来放第三方 gem。
  • $ rails server

上述命令会启动 WEBrick,这是 Ruby 内置的服务器。要查看程序,请打开一个浏览器窗口,访问http://localhost:3000。应该会看到默认的 Rails 信息页面

显示“Hello, Rails!”

  • 要在 Rails 中显示“Hello, Rails!”,需要新建一个控制器和视图。
  • 控制器用来接受向程序发起的请求。路由决定哪个控制器会接受到这个请求。一般情况下,每个控制器都有多个路由,对应不同的动作。动作用来提供视图中需要的数据。

  • 视图的作用是,以人类能看懂的格式显示数据。有一点要特别注意,数据是在控制器中获取的,而不是在视图中。视图只是把数据显示出来。默认情况下,视图使用 eRuby(嵌入式 Ruby)语言编写,经由 Rails 解析后,再发送给用户。

  • 控制器可用控制器生成器创建,你要告诉生成器,我想要个名为“welcome”的控制器和一个名为“index”的动作,如下所示:

  • rails generate controller welcome index

运行上述命令后,Rails 会生成很多文件,以及一个路由。
create app/controllers/welcome_controller.rb
route get 'welcome/index'
invoke erb
create app/views/welcome
create app/views/welcome/index.html.erb
invoke test_unit
create test/controllers/welcome_controller_test.rb
invoke helper
create app/helpers/welcome_helper.rb
invoke assets
invoke coffee
create app/assets/javascripts/welcome.js.coffee
invoke scss
create app/assets/stylesheets/welcome.css.scss

  • 在这些文件中,最重要的当然是控制器app/controllers/welcome_controller.rb
  • 以及视图,位于 app/views/welcome/index.html.erb。
  • 使用文本编辑器打开 app/views/welcome/index.html.erb
    文件,删除全部内容,写入下面这行代码:
    <h1>Hello, Rails!</h1>

我们已经创建了控制器和视图,现在要告诉 Rails 在哪个地址上显示“Hello, Rails!”。这里,我们希望访问根地址 http://localhost:3000 时显示。但是现在显示的还是欢迎页面。
我们要告诉 Rails 真正的首页是什么。在编辑器中打开 config/routes.rb 文件。

Rails.application.routes.draw do 
get 'welcome/index'

# The priority is based upon order of creation:
# first created -> highest priority.
# You can have the root of your site routed with "root"
# root 'welcome#index'
#
# ...

这是程序的路由文件,使用特殊的 DSL(domain-specific language,领域专属语言)编写,告知 Rails 请求应该发往哪个控制器和动作。文件中有很多注释,举例说明如何定义路由。其中有一行说明了如何指定控制器和动作设置网站的根路由。找到以 root
开头的代码行,去掉注释,变成这样:

root
'welcome#index'

root 'welcome#index'
  • 告知 Rails,访问程序的根路径时,交给 welcome控制器中的 index 动作处理。get 'welcome/index'告知 Rails,访问 http://localhost:3000/welcome/index 时,交给 welcome 控制器中的 index动作处理。get 'welcome/index'是运行 rails generate controller welcome index时生成的。
  • 如果生成控制器时停止了服务器,请再次启动(rails server),然后在浏览器中访问http://localhost:3000。你会看到之前写入 app/views/welcome/index.html.erb文件的“Hello, Rails!”,说明新定义的路由把根目录交给 WelcomeController的 index动作处理了,而且也正确的渲染了视图。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容