您正在查看 "Ruby And Rails" 分类下的文章
2008年08月17日 星期日 上午 10:40
作者:老王
在Rails2.1版本下,theme_support无法正常运行,下面介绍一下修复的过程:
修改theme_support/lib/patches/actionview_ex.rb文件:
def render_file(template_path, use_full_path = true, local_assigns = {})
["#{RAILS_ROOT}/themes/#{controller.current_theme}/views",
"#{RAILS_ROOT}/themes/#{controller.current_theme}"
].each do |prefix|
@finder.prepend_view_path(prefix |
2008年08月14日 星期四 下午 04:27
作者:老王
老版本的will_paginate是基于plugin方式的,其安装方式如下:ruby script/plugin install svn://errtheblog.com/svn/plugins/will_paginate
新版本的will_paginate已经抛弃了这样的做法,转而使用gem的方式,本文通过建立一个名为foobar的应用来了解一下will_paginate的用法。
==============================
C:\>rails foobar -d mysql
C:\>cd foobar
C:\foobar>ruby script/generate scaffold article title:string content:text
此时设置一下 |
2008年02月16日 星期六 下午 09:58
作者:老王
数据迁移中字段的unsigned问题
Rails数据迁移中,对一个int字段,比如说ip字段:
新版本:t.integer :ip
老版本:t.column :ip, :integer
不过这样生成的是int(11),没有设置unsigned,如果一定要用unsigned,可以采用一个权宜的方法:
t.column :ip, "int unsigned"
多少有点怪,而且t.column这样的老式写法已经不推荐了,其实最好的方法还是:
t.integer :ip, :unsigned => true
可惜这种写法不知道啥时候才 |
2008年02月14日 星期四 下午 08:41
作者:老王
在旧版本的数据迁移中,以创建表为例,用法如下:
class CreateProducts < ActiveRecord::Migration
def self.up
create_table :products do |t|
t.column :category_id, :integer
t.column :title, :string
t.column :description, :text
|
2008年02月10日 星期日 下午 08:48
作者:老王
我使用的是英文版的NetbeansRubyIDE,启动后,部分菜单显示为中文。解决方法其实很简单那:打开etc/netbeans.conf配置文件,在netbeans_default_options选项的最后加入:-J-Duser.language=en。 |
2008年01月06日 星期日 下午 09:37
作者:老王
在Ruby中,我们可以把一个模块混入(Mixin)到对象中,从而达到类似多重继承的效果。
下面举几个例子来仔细阐述一下这个问题:
首先定义一个Module:
module Foo
def bar
puts "foo";
end
end
然后我们把这个模块混入到对象中去:
class Demo
include Foo
end
如上编码后,模块中的实例 |
2007年11月22日 星期四 下午 02:57
作者:老王
元编程(MetaProgram),就是指用一段程序生成另一段程序。广义的讲,类似Java里基于XML的代码生成和PHP里基于__call的动态代理等都可以算作元编程,不过今天我要介绍的是Ruby里的元编程。
Ruby里的元编程例子很多,attr_accessor算是最容易想到的例子了,通过设定attr_accessor,Ruby解析器会自动给我们的代码加上setter/getter功能,其实实现起来还是相当简单的,下面我们自己实现一个类似attr_accessor的方法(var):
|
2007年11月16日 星期五 下午 03:03
作者:老王
《Web开发敏捷之道(第二版)》这本书已经买了好几个月了,但真正开始系统的学习还是这阵子的事儿。今天改写了书中一段不爽的例子,如下:
在介绍购物车的演示代码中(Page127),有如下例子:
------------------------------------------------------------------------------------------
<%= hidden_div_if(@cart.items.empty?, :id => "cart") %>
|
2007年11月13日 星期二 下午 06:43
作者:老王
假设你已经有了能运行的Ruby环境,那么我们先来安装rcov
C:\Documents and Settings\computer>gem install rcov
Select which gem to install for your platform (i386-mswin32)
1. rcov 0.8.0.2 (ruby)
2. rcov 0.8.0.2 (mswin32)
3. rcov 0.8.0.1 (mswin32)
4. rcov 0.8.0.1 (ruby)
5. Skip this gem
6. Cancel installation
我的操作系统是WindowsXP,所以选择第二项。安装很简单,使用也很简单,我们建立一个rail |
2007年11月13日 星期二 上午 09:54
作者:老王
题目很简单:1 + 2 + ... + 100等于多少(5050)?
当我们了解了最基本的Ruby语法之后,解决方法应该很简单:
irb(main):001:0> sum = 0
=> 0
irb(main):002:0> (1..100).each do |element|
irb(main):003:1* sum += element
irb(main):004:1> end
=> 1..100
irb(main):005:0> puts sum
5050
=> nil
不过,上 |
|
|