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
原文地址:https://www.cnblogs.com/lenovoengineer/p/3647417.html