[ruby on rails] 跟我学之(10)数据输入验证

这里简单加上几个验证,非空,最小长度,唯一

修改模型

修改app/models/post.rb文件,如下:

class Post < ActiveRecord::Base
  #attr_accessible :title, :content
  validates :title, :context, :presence => true
  validates :title, :length => { :minimum =>2}
  validates :title, :uniqueness => { :message =>‘Already taken‘}
end

这时运行服务,修改/新增模型,什么都不填时,无法提交,也不报错。

啥原因?

因为没有把错误消息显示出来

修改views

修改app/views/posts/new.html.erb 文件,如下:

<h1>Add a new post</h1>

<%= form_for @post do |f| %>
  <%if @post.errors.any? %>
  <h3>Errors</h3>
  <ul>
    <% @post.errors.full_messages.each do |msg| %>
      <li><%=msg%></li>
    <% end %>
  </ul>
  <%end%>
  <p>
   <%= f.label :title%><br/>
   <%= f.text_field :title%>
  </p>
  <p>
   <%= f.label :context%><br/>
   <%= f.text_area :context%>
  </p>
  <p>
   <%= f.submit "New Post"%>
  </p>

即添加

 <%if @post.errors.any? %>
  <h3>Errors</h3>
  <ul>
    <% @post.errors.full_messages.each do |msg| %>
      <li><%=msg%></li>
    <% end %>
  </ul>
  <%end%>

对于app/views/posts/edit.html.erb如法炮制。

运行服务

rails s -b 192.168.xxx.xxx -p 3000, 添加一条记录,不填任何消息直接提交,验证消息如下所示:

转载请注明本文来自:http://www.cnblogs.com/Tommy-Yu/p/4143036.html,谢谢!

时间: 2024-10-22 06:26:11

[ruby on rails] 跟我学之(10)数据输入验证的相关文章

[ruby on rails] 跟我学之创建数据

通过form来创建数据,本章节将会涉及内容:创建form,用户重导向,渲染views 和 flash消息. 1. views初步 编辑 app/views/posts/index.html.erb这个view文件,如下: <% @posts.each do |post| %> <h2><%=link_to post.title,post%></h2> <%=post.context%><br/><hr/> <% en

[ruby on rails] 跟我学之修改数据

修改views 修改index视图(app/views/posts/index.html.erb),添加编辑链接,如下: <h1>Our blogs</h1> <% @posts.each do |post| %> <h2><%=link_to post.title,post%></h2> <%=post.context%><br/><hr/> <p><%= link_to &qu

[ruby on rails] 跟我学之基于rails console的查增删改操作

本章节展开对model的介绍:包括查增删改操作.紧接着上面一节<[ruby on rails] 跟我学之HelloWorld> 创建模型 使用命令创建模型 创建表post,默认自带两栏位 title :string, content:text ,  在模型里面按照约定使用单数post而不是复数posts cd blog rails g model post title:string content:text 输出: invoke active_record create db/migrate/

[ruby on rails] 跟我学之显示所有数据

之前的index页,显示的是hello world,现在将其修改为显示我们在rails console里面录入的数据. 1. 修改action 如之前的章节<[ruby on rails] 跟我学之路由映射>里面介绍的,修改app/controllers/posts_controller.rb 的index方法,如下: def index @posts = Post.all end 2. 修改view 并修改app/views/posts/index.html.erb 这个view文件,如下:

[ruby on rails] 跟我学之显示指定数据

根据<[ruby on rails] 跟我学之路由映射>,我们知道,可以访问 GET    /posts/:id(.:format) 来显示具体的对象. 1. 修改action 修改 app/controllers/posts_controller.rb的show这个action.这里有个难题,如果获取url里面的参数? 可以通过params内置变量进行访问!如下: def show @post = Post.find(params[:id]) end 2. 修改view 修改app/view

[ruby on rails] 跟我学之路由映射

前面<[ruby on rails] 跟我学之Hello World>提到,路由对应的文件是 config/routes.rb 实际上我们只是添加了一句代码: resources :posts 但是这个代码默认的路由却有多个,可以通过 rake routes进行查看,如下: [email protected]:/home/ywt/ror_tests/blog# rake routes Prefix Verb URI Pattern Controller#Action posts GET /po

[ruby on rails] 跟我学之HelloWorld

1. 创建工程 rails new blog 2.查看下文件结构 tree 输出如下,请留意红圈中的部分. Gemfile, 用来管理应用程序的gems, 有点类似于python的包,有专门的网站来查找gems: https://rubygems.org/ app,( application)这将会是你主要花精力的地方, app/assets ,这个下面放的是图片,脚本,样式等静态文件. app/controllers, app/models, app/views , 这三个就是所谓的MVC中的

Mac上配置 Ruby on Rails和Git

Ruby on Rails on Mac ==================================================================================== http://morizyun.github.io/blog/marvericks-rails-setup-ruby-rvm-msyql/ for general : useful : http://qiita.com/keneo/items/0a58b188183b5100e3af f

使用 Android 客户端向 Ruby on rails 构建的 Web Application 提交 HTTP GET 和 HTTP POST 请求

最近想弄个能访问 Internet 的 Android 应用,因为求快所以用了 Ruby on Rails 来提供 HTTP 资源.这方面的资料还是比较少的,所以把尝试的过程记录下来. 1 使用 Ruby on Rails 构建 Web Application 1.1 新建 Web Application rails new Test cd Test 1.2 生成 product rails generate scaffold product reference:string quantity: