Rails小记
一:创建一个新的Rails项目
创建一个新的Rails项目输入命令如下:
rails new foo --skip-bundle
注:其中的--skip-bundle是为了绕过防火墙而设的跳过某些命令执行的参数
既然跳过了某些命令,就要想办法通过其他的方式执行,修改如下,打开根目录下的Gemfile文件,将首行的
source 'https://rubygems.org'
修改为:
source 'http://ruby.taobao.org/
然后在命令行执行:
bundle install
这样就能执行之前被跳过的命令。
二、创建控制器
用脚手架创建一个控制器(名为EntriesController):
rails generate controller entries
这将在app/controllers/目录下生成一个entries_controller.rb的文件,其内容为:
class EntriesController < ApplicationController end
第一行表明了一个重要的关系,EntriesController继承自ApplicationController。ApplicationController位于app/controllers/application_controller.rb内,它也一开始不做些事儿,但若想在应用中所有的控制器里共享的功能就需要放在这里。
在控制器里创建一个sign_in方法:
class EntriesController < ApplicationController def sign_in end end
我们也需要一个视图,以致于Rails可以有呈现给访问者的东西。在app/views/entries/目录下创建一个sign_in.html.erb的文件
<h1>Hello <%= @name %></h1>
<%= form_tag :action => 'sign_in' do %> <p>Enter your name: <%= text_field_tag 'visitor_name', @name %></p>
<%= submit_tag 'Sign in' %>
<% end %>
其中form_tag、text_field_tag和submit_tag为帮助方法。
你需要配置一下路由
get 'entries/sign_in' => 'entries#sign_in' post 'entries/sign_in' => 'entries#sign_in'
如果你打开服务器并访问http://localhost:3000/entries/sign_in,就会看到一个简单的Rails视图生成的表单。
现在我们有了一个发送数据给控制器的方式,该是更新控制器来处理信息的时候了:
class EntriesController < ApplicationController def sign_in @name = params[:visitor_name] end end
三、Rails是如果分解URL来路由的
match ':controller(/:action(/:id(.:format)))' http://localhost:3000/entries/show/1.xml 其中 localhost:3000为服务器名 entries为控制器名 show为Action名 1为id值 xml为格式值
通过模型连接到数据库
四、创建Model
先使用generate来创建是最简单的,然后可以逐步加入细节。此时,我们欲创建一个叫entry的模型:
rails generate model etnry
有两个生成的文件很重要,首先是 app/models/entry.rb,处理一个person的逻辑全部位于此中。第二个定义了数据库结构所以需要首先修改之,位于db/migrate/目录下。它的名称为[timestamp]_create_entries.rb,[timestamp]为创建的日期和时间。一开始的内容如下:
class CreateEntries < ActiveRecord::Migration def change create_table :entries do |t| t.timestamps end end end