zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    菜鸟看懂算法以后之一:头痛的64次左移
    C语言通过指针数组和二维数组读取文件
    C++中构造函数调用构造函数
    bnuoj53075 外挂使用拒绝
    [CodeForces]String Reconstruction
    BNU-2017.7.4排位赛2总结
    BNU-2017.7.5排位赛3总结
    BNU-2017.7.3排位赛1总结
    微软大楼设计方案(困难)
    最长公共子序列针对小字符集的算法
  • 原文地址:https://www.cnblogs.com/lenovoengineer/p/3647417.html
Copyright © 2011-2022 走看看