在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
只是怕忘了命令,全部撸一次,记个大概。。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
安装Ruby之前,先要安装RVM:
curl -L https://get.rvm.io | bash –s
然后,安装一些依赖之后:
rvm install ruby version --with-openssl-dir=$HOME/.rvm/usr
之后安装Rails:
gem install rails --version 4.0.0 --no-ri --no-rdoc
创建Rails新程序:
rails new first_app
启动Rails测试服务器:
rails server –b 0.0.0.0
Rails产生静态资源文件:
rails generate controller StaticPages home help --no-test-framework
手动创造Rails之后,默认路由不是以资源方式定义的:
SampleApp: :Application. routes. draw do root to: 'static_pages#home' resources :users resources :sessions, only: [:new, :create, :destroy] match '/signup', to: 'users#new', via: 'get' match '/help' , to: 'static_pages#help' , via: 'get' end
新建的控制器内容都是空的:
class StaticPagesController < ApplicationController
其生成的视图也只是一个提示性的HTML:
<h1>StaticPages#home</h1>
Rails提供了特别的布局文件application.html.erb,可以提供网页相同的结构:
<!DOCTYPE html> </head>
Rails除了提供内置方法供我们在视图中使用,我们还可以自建帮助方法,在视图中使用。
app/helper/static_pages_helper.rb app/helper/application_helper.rb
Rails中创建LINK的链接及图片:
<%= link_to "Sign in" , '#' %> 第一个是链接文本,第二个是链接地址 <%= link_to "About" , about_path %> <%= link_to image_tag( "rails.png" , alt: "Rails" ), 'http://rubyonrails.org/' %>
asset pipeline的目录及自定义样式文件:
app/assets/stylesheets app/assets/stylesheets/custom.css.scss
静态资源目录:
• app/assets
局部视图:
<%= render 'layouts/shim' %> app/views/layouts/_shim.html.erb
生成用户模型:
rails generate model User name:string email:string
进行数据迁移:
bundle exec rake db:migrate
入库前进行数据有效性验证(电邮不重复,密码加密码,长度不小于3,用户名不超过50)
class User < ActiveRecord::Base before_save {self.email = email.downcase } validates :name, presence: true, length: {maximum: 50 } VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false } has_secure_password validates :password, length: { minimum: 3 } end
确保电邮唯一性的方法:
生成索引: rails generate migration add_index_to_users_email 修改迁移文件: class AddIndexToUsersEmail < ActiveRecord: :Migration
安全密码实现过程: GEM需求 gem 'bcrypt-ruby' , '3.0.1' bundle install. 数据库增加新列: rails generate migration add_password_digest_to_users password_digest:string bundle exec rake db:migrate
用户注册表单:
<%= form_for(@user) do |f| %> <%= render 'shared/error_messages' %> <%= f.label :姓名 %> <%= f.text_field :name %>
<%= f.label :邮箱 %> <%= f.text_field :email %>
<%= f.label :password %> <%= f.password_field :password %>
<%= f.label :password_confirmation, "Confirmation" %> <%= f.password_field :password_confirmation %>
<%= f.submit "Create my account", class: "btn btn-large btn-primary" %> <% end %>
资源模型的控制器标准操作:
class UsersController < ApplicationController def show @user = User.find(params[:id]) end def new @user = User.new end def create @user = User.new(user_params) if @user.save flash[:success] = "Welcome to the Sample App!" redirect_to @user else render 'new' end end private
def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation) end end
自定义出错信息,放在app/views/shared/_error_messages.html.erb
<% if @user. errors. any? %>
生成session控制器语法
rails generate controller Sessions --no-test-framework
登陆时的FORM
<%= form_for( :session, url:
sessions_path) do | f| %>
用户包含sessionHelper(正常时只能VIEW用,而CONTROLLER用要明文INCLUE)
class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception include SessionsHelper end
为表增加新字段,且为此字段增加索引:
rails generate migration add_remember_token_to_users db/migrate/[timestamp]_add_remember_token_to_users.rb
生成token的回调函数:
class User < ActiveRecord: :Base
<header class="navbar navbar-fixed-top navbar-inverse"> <div class="navbar-inner"> <div class="container"> <%= link_to "Autop", '#', id: "logo" %> <nav> <ul class="nav pull-right"> <li><%= link_to "Home", root_path %></li> <li><%= link_to "Help", help_path %></li> <% if signed_in? %> <li><%= link_to "Users", '#' %></li> //<li id="fat-menu" class="dropdown"> //<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Accout <b class="caret"></b> </a> //<ul class="dropdown-menu"> <li><%= link_to "Profile", current_user %></li> <li><%= link_to "Settings", '#' %></li> <li class="divider"> </li> <li> <%= link_to "Sign out", signout_path, method: "delete" %> </li> //</ul> //</li> <% else %> <li><%= link_to "Sign in", signin_path %></li> <% end %> </ul> </nav> </div> </div> </header>
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论