• 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
  • 相关阅读:
    20200924-2 功能测试
    作业要求20200924-4 代码规范,结对要求
    20200924-1 每周例行报告
    20200929-git地址
    白名单
    作业要求 20200917-1 每周例行报告
    词频统计 SPEC
    20200910-1 每周例行报告
    20200924-3 单元测试,结对
    20200924-5 四则运算试题生成,结对
  • 原文地址:https://www.cnblogs.com/lenovoengineer/p/3647417.html
Copyright © 2020-2023  润新知