随笔分类 - 最后:Ruby
摘要:begin raise 'A test exception.' rescue Exception => e puts e.message puts e.backtrace.inspect end
阅读全文
摘要:viewfunction init_tree(product_name) { var htmlobj=$.ajax({url: "get_all_file?param=" + param_value, async: false}); var jsonNodes = htmlobj.respon...
阅读全文
摘要:在Ruby on Rails中真的有一堆Select helper可以用,我们经常容易混淆。常见的有三个..select, select_tag, collection_select(其余的什么select_date那些不谈)我们先来看看一个基本的下拉式选项骨架 在一个下拉式选项中,有一些是必备的...
阅读全文
摘要:我们可以使用Time类来生成一个当前时间的对象:t = Time.new或t = Time.nowTime类有类方法mktime(同义方法是local方法)来根据传入的参数生成时间对象,并且它使用的是当前的时区:t1 = Time.mktime(2001) # Janu...
阅读全文
摘要:在做忘记密码功能时考虑到邮箱链接的安全性,去网上参考下别人的意见,查询后发现许多网站的这个功能都存在漏洞,如:手机方式:http://www.wooyun.org/bugs/wooyun-2010-018055 邮件方式:http://www.2cto.com/Article/201305/215...
阅读全文
摘要:在Gemfile中添加gem 'bcrypt-ruby', '~> 3.0.0' 然后执行bundle install,rails服务启动没有问题,但是运行程序时页面报错如下:cannot load such file 2.0/bcrypt_ext解决方法:1.在C:盘的个人用户主目录下(如C:\...
阅读全文
摘要:%{String} 用于创建一个使用双引号括起来的字符串,这个表示法与%Q{String}完全一样result = %{hello} puts "result is: #{result}, Type is:#{result.class}" #>>result is: hello, Type i...
阅读全文
摘要:全局变量:由$开头,可以在程序的任何位置访问到。在初始化前,全局变量有一个特殊的值nil。这里列出了一些以$打头并跟单个字符的特殊变量,包括主要的系统变量以及它们的含义:$! 最近一次的错误信息 $@ 错误产生的位置 $_ gets最近读的字符串 $. 解释器最近读的行数(line nu...
阅读全文
摘要:详细参考 http://railscasts.com/episodes/73-complex-forms-part-1中part-1、2、3部分 借助field_for可以生成表单来处理两个或更多模型对象的数据 先看一个官方的例子,一个表单中有person和permission两个模型,其中每个pe
阅读全文
摘要:1、什么是代码块 在Ruby中,{}或do...end之间的代码是一个代码块。代码块只能出现在一个方法的后边,它紧接在方法最后一个参数的同一行上,由yield关键字调用。例如:[1,2,3,4,5].each { |i| puts i }[1,2,3,4,5].each do |i| puts iend块变量:以yield关键字调用block也可以传递参数,block中竖线(|)之间给出的参数名用于接收来自yield的参数。 竖线之间(如上例中的 | i |)的变量被称作块变量,作用和一个正常方法的参数一样2、{}和do...end优先级不同 在传递一个block时,使用{}传递的block比
阅读全文
摘要:Ruby模块(module)2013-04-03 16:47:09|分类:Ruby|标签:rubyrequireloadextendinclude|字号订阅 Ruby 和 Java 一样支持单继承,也正如 Java 引入 interface 来解决多继承的两难问题一样,Ruby 也提供了单继承和多继承的妥协机制:即模块。 模块的定义和类比较相似,使用module关键字。但模块不能被实例化,也不能被子类化,模块是独立的,且一个模块对像是Module类的一个实例。在模块中,可以定义实例变量、实例方法、类变量、类方法和属性等,并且在模块中还可能以定义类和模块。在类中也可以定义模块。但是,必须被类引用
阅读全文
摘要:简单的讲,一个迭代器就是一个能接受代码块的方法。当初为了进行迭代操作而设置了带块方法,现在很多时候仍然称它为迭带器。 可实际上,早期版本的 Ruby 将使用代码块的方法称为迭代器,因为它们就是被设计来实现循环迭代的。但是在Ruby发展过程中,代码块的用途在后来已经得到了很大的增强,从最初的循环抽象到任何事情,那些进行迭代操作的方法仍然可以叫做迭代器,但要将所有带块方法的调用过程都看作迭带器的话,并不太合适而且概念上也容易引起混乱。 现对Ruby中基础的迭代器做简单的介绍:1、each方法最简单的迭代器,连续访问集合的所有元素,依次赋给与each方法相关联的block的变量。由于Ruby 内建的
阅读全文
摘要:三个方法的作用都是将一个字符串打印到控制台比较项目putsprintp换行符末尾添加换行符末尾不加换行符末尾添加换行符非字符串对象的输出调用该对象的to_s方法调用该对象的to_s方法通过inspect方法将对象转换成字符串 通过inspect方法将对象转换成字符串的方法能比to_s方法返回对程序员更加友好的对象表示。 比如,当要打印一个数组时,p输出采用的是数组字面量的表示法,而puts则只是简单的将每个元素打印到单独的一行!array =[2,4,6,8,10]puts arrayp arrayprint arrayputs array输出的结果是:246810p array的结果:[2,
阅读全文
摘要:block可以用来定义必须运行在事务控制环境下的代码。例如,你经常需要打开一个文件,对其内容做些处理,然后确保在处理结束后关闭文件。尽管可以用传统方式来实现,但也存在“应该由文件负责自身的关闭”这样的观点。Ruby的File类支持这项技术。 如果File.open有个关联的block,那么该block将被调用,且参数是该文件对象,当block执行结束时文件会被关闭。这意味着File.open有两种不同的行为:当和block一起调用时,它会执行该block并关闭文件;当单独调用时,它会返回文件对象。 使得上述行为成为可能的是Kernel.block_given?方法,当某方法和block关联在一
阅读全文
摘要:Ruby中使用yield语句调用block时可以带有参数,参数值见传送个相关联的block。如果传给block的参数是已经存在的局部变量,那么这些变量即为block的参数,他们的值可能会因block的执行而改变。同样的规则也适用于block内的变量:如果他们第一次出现在block内,那么他们就是block的局部变量。相反,如果他们第一次出现在block外,那么block就与其外部环境共享这些变量。 例如:a =[4,2]b ='cat'c =1a.each{|b| c = b*a[1] d = c+2}p a =>[4,2]p b =>2p c =>8pdef
阅读全文
摘要:一、 Ruby的赋值实际是以并行方式执行的,所以赋值语句右边的值不受赋值语句本身的影响。在左边的任意一个变量或属性赋值之前,右边的值按他们出现的顺序被计算出来。 1、当赋值语句有多于一个左值时,赋值表达式将返回由右值组成的数组。2、如果赋值语句的左值多于右值,那么多于的左值将被忽略。如果右值多于左值那么额外的右值将被忽略。 3、如果赋值表达式只有一个左值而有多个右值,那么右值将被转换成数组,然后赋值给左值。并行赋值语句最大的好处就是可以方便的交换两个变量的值。 二、使用Ruby的并行赋值操作,你可以叠起和展开数组。 1、如果最后一个左值有一个“*”前缀,那么所有多余的右值将被集合在一起,并作为
阅读全文
摘要:Ruby中的include语句应注意以下两个问题: 1、include与文件无关。C语言中,#include预处理指令在编译期将一个文件的内容插入到另一个文件中。Ruby语句只是简单地产生一个指向指定模块的引用。如果模块位于另一个文件中,在使用include之前,你必须使用require(或者不那么常用的旁系,load)将文件加载进来。 2、Ruby的include并非简单的将模块的实例方法拷贝到类中,相反,它建立一个由类到所包含模块的引用。如果多个类包含这个模块,它们都指向相同的内容。即使当程序正在运行时,如果你改变模块中一个方法的定义,所有包含这个模块的类都会表现出新的行为 3、上述第二条
阅读全文
摘要:函数名称说明示例&数组与,返回两数组的交集[1,2] & [2,3] =>[2]*复制数组n次[1,2]*2=> [1,2,1,2]+返回两数组的并集,但不排除重复元素[1,2]+[2,3]=>[1,2,2,3] [1,2,2,3]|追加元素,但排除重复元素[1,2] | [2,3]=> [1,2,3]-返回第一个数组与第二个数组不同的元素[1,2]-[2,3]=> [1]比较数组[1,2][2,3] =>flase==比较数组,若所有元素均相等时返回真[1,2]==[2,1]=>flaseassoc从数组的每个元素中寻找指定对象[1,
阅读全文