再次提交一回 ---- 创建模型 Rails 提供了一个生成器用来创建模型 [root@h202 blog]# bin/rails generate model Article title:string...create test/models/article_test.rb create test/fixtures/articles.yml [root@h202 blog]# 生成的两个文件中包含了这个...model 的结构 [root@h202 blog]# cat db/migrate/20160422140912_create_articles.rb class CreateArticles <...h202 blog]# cat app/models/article.rb class Article < ActiveRecord::Base end [root@h202 blog]# 可知这个新生成的...model 继承自 ActiveRecord ---- 进行迁移 迁移就是将前面定义的model ,落实到数据库中形成表结构 [root@h202 blog]# bin/rake db:migrate
在model中添加了基础的校验逻辑,title 字段不能为空,不能小于5个字符 保存成功就直接显示,如果保存失败,就重绘 new 页面,new 页面中加入了对错误信息的显示 并且将之前的值放到新的窗口中
定义 update 方法,并且添加 edit 链接和 show 链接 [root@h202 blog]# vim app/controllers/articles_controller.rb [root
创建了一个叫 ArticlesController 的类,继承自 ApplicationController 这次报错变了,成了找不到 new 方法 ---- 定义 new 方法 [root@h202...ArticlesController < ApplicationController def new end end [root@h202 blog]# 刷新页面 这次报错,是视图中找不到对应的模板...cat app/views/articles/new.html.erb Test blog http://soft.dog/ [root@h202 blog]# 要注意命名,因为 Rails...中 约定优于配置 的设计,这里的目录地址,和文件命名都是有意义的 app/views 是默认的视图存放处 articles/new 是 articles#new 方法默认去寻找的视图 new.html.erb...文件中后面的扩展名 .html.erb 也包含了意义,html 指定模板类型,erb 指定用来处理模板的程序 再次刷新 这次没有报错,获得了我指定的内容
点击 【Destroy】 后会根据我们的定义弹出提示 连续删除几次后所剩无几 目前已经通过 Rails 实现了文章的 新建、显示、列出、更新、删除 操作 ---- 命令汇总 rails server...-b 0.0.0.0 rails generate controller welcome index cat app/views/welcome/index.html.erb vim config/routes.rb...grep -v " #" config/routes.rb | grep -v "^$" rake routes bin/rails g controller articles cat app/controllers...cat app/views/articles/new.html.erb bin/rake routes cat app/controllers/articles_controller.rb bin/rails
保存数据 修改 create 方法,对提交的数据进行保存 [root@h202 blog]# vim app/controllers/articles_controller.rb [root@h202...:article]) @article.save redirect_to @article end end [root@h202 blog]# 再提交一次 我们要明确地告知 Rails...params.require(:article).permit(:title,:text) end end [root@h202 blog]# ---- 显示文章 再次提交会产生这样的报错
指定 /articles 为对应的 URL [root@h202 blog]# bin/rake routes Running via Spring preloader in process 13088...articles#destroy root GET / welcome#index [root@h202 blog]# (这里的.../articles 明明对应两个方法,GET、POST ,有点不太明白,为什么这样指定就一定成了POST请求) 随便填写东西,提交 原因是 ArticlesController 中找不到对应的 create...def create end end [root@h202 blog]# 重新提交一次 这回又是找不到模板,不过变成了找不到 create 模板 暂时不尝试去直接解决这个模板问题 我们将刚才获取到的内容直接反馈回来...修改create方法,直接打印获取到的参数 [root@h202 blog]# vim app/controllers/articles_controller.rb [root@h202 blog]
创建一个控制器和视图 要在 Rails 中显示“My first test” 的静态页面,需要新建一个控制器和视图 控制器用来接受向程序发起的请求 视图的作用是,以人类能看懂的格式显示数据 [root@...h202 blog]# rails generate controller welcome index Running via Spring preloader in process 11871...index' root 'welcome#index' end [root@h202 blog]# ---- 进行访问 直接刷新页面 注意,我修改了配置和服务,但并没有对服务进行重启,而可以直接加载出新的内容...,说明 Rails 可以进行动态加载 In development mode, Rails does not generally require you to restart the server; changes...下面是访问过程中产生的日志 Started GET "/" for 192.168.100.1 at 2016-04-22 20:13:15 +0800 Cannot render console from
MVC 分块设计有助于管理复杂的应用程序,因为可以在一段时间内只用关注一个方面;例如,可以在不依赖业务逻辑的情况下专注于视图设计;同时也让应用程序的测试更加容易;MVC 分层同时也简化了分组开发;不同的开发人员可同时开发视图...、控制器逻辑和业务逻辑 其核心思想就是模块化,各司其职,分工协作 下面是大体的数据流向图 image.png Model(模型)是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据...View(视图)是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的 Controller(控制器)是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据...image.png ---- 创建一个简单页面 Rails 的 MVC 架构 MVC 角色 与数据库的交互 image.png 数据流程 image.png 对应文件 image.png
f.text_area :text %> [root@h202 blog]# 直接刷新页面 一个简单的表单就呈现出来了...不过,通过查看源码,我们可以看到 action 部分指向的是当前页面 action="/articles/new" , 而这个页面 (Restfull API) 应该是用来进行显示的,而不是进行处理的
前言 Rails 是使用 Ruby 语言编写的网页程序开发框架 通过集成开发者需要的常用组件,极大地简化了网页程序的开发 Tip: 类似于 python 的 Django ,perl 的 Dancer...继前面的 Ruby on Rails 基础 ,这里再进一步探究一下其内部运作机制 Rails 的相关基础,详细可以参考 官方文档 和 Ruby China 的 Rails 入门 Tip: 当前的最新版本为...Rails 5.0.0.beta3 发布于 February 27, 2016 4:00 pm ---- 概要 ---- 环境 [root@h202 blog]# cat /etc/issue CentOS...--version Rails 4.2.6 [root@h202 blog]# node -v v0.10.42 [root@h202 blog]# rvm -v rvm 1.27.0 (latest...是 MVC 框架的 ruby 实现 那什么是 MVC 呢?
再次加载 可以成功显示了 ---- 列出所有文章 [root@h202 blog]# vim app/controllers/articles_control...
删除文章 在 controllers 中定义 destory 方法 然后在 index 视图中加入 Destroy 链接 [root@h202 blog]# v...
within layouts/application (0.2ms) Completed 200 OK in 44ms (Views: 42.9ms | ActiveRecord: 0.0ms) ---- 资源的CRUD...资源的创建、读取、更新和删除操作,简称为 CRUD。...root@h202 blog]# vim config/routes.rb [root@h202 blog]# grep -v ' #' config/routes.rb | grep -v "^$" Rails.application.routes.draw...Restfull API 与 Controller#Action 的对应关系 我们尝试访问其中的一个链接,/articles/new 得到如下反馈 报错的原因为没有 ArticlesController...---- 创建控制器 [root@h202 blog]# bin/rails g controller articles Running via Spring preloader in process
article】 成功跳转到了添加页面,随便输入点什么,提交 自动跳转到了显示页面,点击【Back】 跳转回了所有列表页面 Tip: 之所以每做一次修改都能直接生效,是因为在开发模式下(默认),每次请求 Rails...都会自动重新加载程序,因此修改之后无需重启服务器 ---- 数据验证 我们常常有对输入进行校验的需求,以避免接受到了无效或不合规范的数据 [root@h202 blog]# vim app/models
创建rails项目 以blog项目为例: rails new blog 只需几秒钟就会得到一个基本的rails项目结构: ?...的视图文件,将视图文件写入以下内容 hello, rails 此时,浏览器中打开 / 和 /hello/index/ 路径都将返回同样的内容 ?...使用以下命令生成控制器: rails generate controller Articles 配置articles的路由: resources :articles 使用 rails routes 命令查看当前的路由配置...按照上文中的方法创建好 new.html.erb 文件和 new 方法,在 new.html.erb 文件中写入: new article crud就实现了。
q=last_name:Smit 其中last_name是要搜索的字段,Smith是该字段的值 3.4 使用Query DSL查询 GET http://192.168.56.201:9200/megacorp..."_type" : "pageviews", "_id" : 1, "_source": "views" } ] } 相同index和type...GET /website/blog/_mget { "ids" : [ "2", "1" ] } 9、批量操作 POST _bulk?..."123", "_retry_on_conflict" : 3} } { "doc" : {"title" : "My updated blog post"} } 备注:每行使用换行符分开,bulk操作不是原子性的...;批量要注意每次提交的文档大小
该方法接受一个JSON对象,表示要查询的条件,并返回一个游标对象,该对象可以用于遍历查询结果集。find()find()方法用于查询一个集合中的文档。...该方法接受一个JSON对象,其中每个键都是一个字段名,对应的值是该字段所匹配的值。如果省略该参数,则返回集合中的所有文档。...$gte是MongoDB中的一个操作符,用于比较值的大小。findOne()findOne()方法用于查询一个集合中的单个文档。...该方法接受一个JSON对象,其中每个键都是一个字段名,对应的值是该字段所匹配的值。如果省略该参数,则返回集合中的第一个文档。...请注意,findOne()方法只返回匹配条件的第一个文档。
更新文档在MongoDB中,我们可以使用updateOne()和updateMany()方法来更新文档。updateOne()updateOne()方法用于更新集合中匹配条件的第一个文档。...该方法接受两个参数:一个JSON对象,表示要更新的条件;以及一个JSON对象,表示要更新的值。如果省略第二个参数,则更新操作将不会进行任何更改。...在更新操作完成后,将会输出一个信息,表示已经更新了多少个文档。updateMany()updateMany()方法用于更新集合中匹配条件的所有文档。...该方法接受两个参数:一个JSON对象,表示要更新的条件;以及一个JSON对象,表示要更新的值。如果省略第二个参数,则更新操作将不会进行任何更改。...在更新操作完成后,将会输出一个信息,表示已经更新了多少个文档。$inc是MongoDB中的一个操作符,用于将字段的值增加指定的数量。
删除文档在MongoDB中,我们可以使用deleteOne()和deleteMany()方法来删除文档。deleteOne()deleteOne()方法用于删除集合中匹配条件的第一个文档。...John Doe的文档,并将其删除。...在删除操作完成后,将会输出一个信息,表示已经删除了多少个文档。deleteMany()deleteMany()方法用于删除集合中匹配条件的所有文档。该方法接受一个JSON对象,表示要删除的条件。...30的所有文档,并将它们全部删除。...在删除操作完成后,将会输出一个信息,表示已经删除了多少个文档。
领取专属 10元无门槛券
手把手带您无忧上云