• rails学习笔记(5)


    1) 用stylesheet_link_tag方法和javascript_include_tag方法生成的<link>和<script>链接会在地址后面自动加上最后修改日期,例如/stylesheets/style.css?1150321221,以去除缓存的影响,让修改马上生效。

    2) rails内置了很多验证,在提交表单时,可以直接使用rails提供的验证。rails中关于程度和数据库的连接环节是在model里的,在model里使用validates_xxxx_of可以完成常用的验证。常用的有:

    <1> validates_presence_of 用于验证非空(输入空格也算空);

    <2> validates_numericality_of 用于验证数字

    <3> validates_uniqueness_of 用于验证唯一

    <4> validates_length_of 用于验证字节长度

    <5> validates_format_of 用于验证指定格式

    另外还可以定义 validate方法,它会在模型类在保存实例之前会自动调用这个方法。

    需要说明的是,这些验证都是服务器端验证,不是前端通过js的验证。如果验证不通过,会自动生成一串错误提示信息,包含在form最前端。

    如:

    =============================================

    class Product < ActiveRecord::Base

       validates_presence_of :title, :description, :image_url

       validates_numericality_of :price

       validates_uniqueness_of :title

       validates_format_of :image_url,

                                        :with => %r{^http:.+\.(gif|jpg|png)$}i,

                                        :message => "must be a URL for a GIF,JPG, or PNG image"

       protected

       def validate

          errors.add(:price, "should be positive") unless price.nil? || price >= 0.01

       end

    end

    =============================================

    3) 局部模板。 布局和视图都可以直接使用控制器中的变量,但局部模板不行。局部模板传参有两种方式,一种是通过:object => xxxx传参,用于单数情况,一种是:collection => xxxx传参,用于复数情况。这两者传参给局部变量时,局部变量内部通过和模板名同名的变量可以得到传进来的参数,例如:

    =======================

    new.rhtml:

    <%= render(:partial=>'article', :object=>@an_article) %>

    _article.rhtml:

    <p>this article's name is <%= article.name %></p>

    =======================

        如果传给:partial参数的是一个简单的名字,那么rails会在当前控制器对应的view目录下去查找模板。如果我们需要一个被多个action共享的模板,可以给:partial传带"/"的参数,这样rails就会从app/views根目录开始查找对应的模板。rails习惯把共享局部模板放在app/views/shared目录下,使用的时候如:

    =============================

    <%= render(:partial => 'shared/post', :collection => @article_list) %>

    =============================

  • 相关阅读:
    bzoj 1053
    bzoj 1004 组合
    字符串哈希
    bzoj 1015 并查集
    bzoj 1003 最短路+dp
    HDU 4352 数位dp
    bzoj 1879 状压dp
    codeforces 55D 数位dp
    Codeforces 830B
    组合计数 && Stirling数
  • 原文地址:https://www.cnblogs.com/cly84920/p/4426889.html
Copyright © 2020-2023  润新知