rails 入门练手篇

对ruby on rails 入门学习,进行全栈项目练习,本篇主要是对ror语法学习和全栈开发的一个了解,其中依据的是里克的《Rails 实践》,与《Ruby on Rails 實戰聖經》,在此特别感谢前辈们无私奉献,乐于分享的精神。

IDE-RubyMine 快捷键

一级基础

  Ctrl+Alt+G:弹出Generate
  Ctrl+Alt+L:格式化代码
  Alt+F1:切换视图(Project, Structure, etc.).
  Alt+F2:弹出预览窗口,可选择浏览器打开网页
  Alt+Insert:相当于File|New,不过要在class外执行
  Alt+Enter:快速修复提示,相当于Eclipse的Alt+F1
  Alt+Home:显示文件夹导航条
  Ctrl+J:插入动态模板代码,非常方便。Ctrl+Alt+J:用动态模板包围选中代码
  Ctrl+/Ctrl+Shift+/:注释,去注释代码
  Ctrl+Space:代码自动补全,相当于Eclipse的Alt+/。建议修改为Alt+/
  Ctrl+Q:显示文档Doc
  Ctrl+W:动态选择,多次按依次选择 单词-行-段-全
  Ctrl+D:复制一行
  Ctrl+Y:删除一行
  Shift+Alt+N:在Controller,Model,View间跳转
  Shift+Alt+F10:运行,Dubug

二级进阶

  Alt+Home:显示导航条
  Alt+F1:在不同视图中切换 (Project, Structure, etc.).
  Ctrl+Tab:在tool窗口和打开的文件窗口中切换
  Ctrl+F:在当前文件中查找
  Ctrl+Shift+F:在文件夹中查找
  Ctrl+Shift+F7:快速显示选中代码的调用
  Ctrl+Shift+.:在*.html.erb文件中插入
  Ctrl+NCtrl+Shift+NCtrl+Shift+Alt+N:通过名字查找类,文件,符号
  Ctrl+Shift+T:To surround a block of code
  Ctrl+Alt+D:显示Model关系图,即ER图。View | Show Model Dependency Diagram

三级耍酷

  a.界面调整
  Esc:从任何界面返回到编辑器
  Shift+Esc:回到编辑器,隐藏所有工具栏
  Shift+F6:重命名,文件,方法名,类名,变量名等
  F12:相当于Shift+Esc的回退键,显示最后一次打开的工具栏
  b.变量选择
  Ctrl+Shfit+F7:高亮显示本文件中变量出现的位置
  F3,Shift+F3:在不同变量之间跳转
  Esc:取消选择
  Alt+Left, Alt+Right: 在不同的Tabs中切换
  Ctrl+点击Tab:弹出路径框,选择后会在新窗口打开。
  Ctrl+E:弹出最近打开的文件选择框
  Ctrl+Shift+Up, Ctrl+Shift+Down:把代码住上移和住下移
  Ctrl+Shift+Backspace:光标移动到上次修改的位置
  Ctrl++Ctrl+-:展开或收缩代码
  Ctrl+Shift++Ctrl+Shift+-:全部展开或收缩代码
  Ctrl+~:切换主题,配色等(一般默认会被输入法占用)

更改快捷键

  示例:把代码提示快捷键由Alt+Space改为Ctrl+Alt+/
  打开File»Setting»Keymap
  找到Main menu»Code»Complete Code»Basic,选择右边的“Add Keyboard Shortcut”
  在弹出的框里光标放到输入框,同时按下:Ctrl+Alt+/
  成功后应用保存,即可生效

理清概念

目录映射

一般情况下,进行开发时,源代码保存在宿主机中,方便地使用 IDE 等工具, 虚拟机环境一般只用来运行代码,所以这里就需要使用目录映射功能,将本地的目录映射到虚拟机的对应目录

默认情况下,当前的工作目录,会被映射到虚拟机的 /vagrant 目录, 当前目录下的文件可以直接在 /vagrant 下进行访问

config.vm.synced_folder “D:/workspace”, “/home/vagrant/workspace”

say hello

Rails是MVC框架,显示Hello World!不需要用到数据库,所以我们只要先写Controller和View,以及让路由指派到这个Controller即可,输入以下指令就会产生出一个叫做welcome的空Controller档案:

$bin/rails generate controller welcome

依次修改相应文件,按MVC架构

设定及建立数据库

Rails的数据库设定档是config/database.yml,如果你打开这个档案,默认的设定是SQLite3。这个档案里包含三段不同环境的设定,对应到三个Rails执行环境:

  • development 开发模式,用在你的开发的时候
  • test 测试模式,用在执行自动测试时
  • production 正式上线模式,用在实际的上线运作环境

YAML是一种可读性高,用来表达设定资料的资料格式。它严格要求缩排(建议为两个空白),且冒号后面必须有一个空格。一般我们会预期YAML的值解析出来是字串,因此如果内容是数字或多行文字时,建议加上引号以避免字串解析错误。例如 password: “123456”。如果没有加上引号,这串数字会被解析成Fixnum物件而不是字串String,后续可能造成型别判断错误。

档案 说明
migrate/20141021135430_create_people.rb 用来建立people数据库资料表的Migration(你的档案开头名称会有不同的时间)
app/models/person.rb person model档案
app/controllers/people_controller.rb people controller档案
app/views/people/index.html.erb 用来显示所有文章的index页面
app/views/people/edit.html.erb 用来编辑文章的页面
app/views/people/show.html.erb 用来显示特定一篇文章的页面
app/views/people/new.html.erb 用来新增文章的页面
app/views/people/_form.html.erb 用来显示编辑和新增文章的表单局部(Partial)样板
app/helpers/people_helper.rb 可在文章Views中使用的Helper方法
config/routes.rb 设定URL路由规则的档案,scaffold再此新增了一行resources :people
app/assets/stylesheets/scaffold.scss Scaffold鹰架提供的样式档案
app/assets/stylesheets/people.scss people的CSS样式档案
app/assets/javascripts/people.coffee people的JavaScript档案

常见错误-SyntaxError: unexpected $end

SyntaxError加上unexpected $end, expecting keyword_end的话,那一定是你少了(或多了)end关键字,def跟do都必须要有对应的end。不过很可惜Rails没办法提示你是那一行少了(或多了)end,发生错误的行数都会告诉你是最后一行。如果真的不太好找,你可以单独用ruby -w去执行发生错误的程式,例如ruby -w app/controller/welcome_controller,这会打开Ruby的警告模式来获得更准确的语法错误讯息。

参考

Ruby on Rails 实战圣经-Rails 起步走