2007-04-28

每天一剂Rails良药之Versioning Your ActiveRecord Models

关键字: Rails Versioning Your ActiveRecord Models
Wiki有一个功能就是Undo,我们来看看Rails的acts_as_versioned插件 1,安装插件 ruby script/plugin install acts_as_versioned 2,例子 class Chapter < ActiveRecord::Base acts_as_versioned end class AddChapterAndVersionTables < ActiveRecord::Migration def self.up create_table :chapters do |t| t. ...
2007-04-28

每天一剂Rails良药之Tagging

关键字: rails tagging
“social networking”产生了一个东西叫“tagging”,而DHH为Rails写了一个acts_as_taggable插件,简化了Rails开发tagging功能 acts_as_taggable依赖于Rails的polymorphic associations feature,允许对任何model进行tag 1,安装插件 ruby script/plugin install legacy 2,建立数据库表 由于model和tag是Many-to-Many的关系,我们需要建立如下migration class AddDatabaseStructureForTag ...
2007-04-28

每天一剂Rails良药之Self-referential Many-to-Many Relationships

关键字: Rails Self-referential Many-to-Many Relationships
考虑一个UserStory,Person 1添加Person 2为好友,怎样让Person 2的好友列表中也有Person 1? 这里Person对自己Many-to-Many关联。 class AddPeopleAndTheirFriendsRelationship < ActiveRecord::Migration def self.up create_table :people do |t| t.column "name", :string end create_table :friendships do |t| ...
2007-04-28

每天一剂Rails良药之DRY Up Your Database Configuration

关键字: Rails DRY Up Your Database Configuration
由于database.yml十分小巧,我们很容易忘掉它是用YAML这种非常健壮的标记语言来写的。 YAML有一个叫"merge keys"的特性,它可以merge one Hash into another。 例如: development: adapter: mysql database: DRYUpYourDatabaseConfig_development username: root password: secret socket: /tmp/mysql.sock test: adapter: mysql database: DRY ...
2007-04-27

每天一剂Rails良药之Integrating with Legacy Databases

关键字: Rails Integrating with Legacy Databases
针对遗留系统的二次开发或者需要使用遗留数据库时,我们可以突破默认的Rails数据库表名惯例,秘笈就是配置ActiveRecord::Base 为了在整个Rails应用域里起作用,我们将配置写在config/environment.rb里: ActiveRecord::Base.table_name_prefix = "wp_" ActiveRecord::Base.pluralize_table_names = false ActiveRecord::Base.primary_key_prefix_type = :table_name_with_underscore A ...
2007-04-26

每天一剂Rails良药之Connecting to Multiple Databases

关键字: Rails Connecting to Multiple Databases
预备知识: 1,Rails启动后没有马上建立数据库连接,而是当model第一次调用connect()方法时建立连接 2,默认情况下ActiveRecord::Base建立数据库连接,然后它的所有子类即所有的model均拥有该连接 3,model查找数据库连接时从自己开始向它的父一层一层查找连接,直到找到为止 如果我们的Rails应用需要建立对多个数据库的连接,我们该怎样做呢? 1,database.yml development: adapter: mysql database: default username: root password: socke ...
2007-04-26

每天一剂Rails良药之Rails Without A Database

关键字: Rails Without A Database
一般Rails项目都默认为需要数据库存储支持,但是当我们不需要数据库时,如基于外部WebService的项目和一些测试时,我们可以通过一些小技巧来达到解除数据库依赖的目的 1,修改test_helper.rb ENV["RAILS_ENV"] = "test" require File.expand_path(File.dirname(__FILE__) + "/../config/environment") require 'application' require 'test/unit' require 'action_controller/test_process' re ...
公司接了个基于Rails的二次开发的项目,看人家的代码本来就一直云里雾里,今天被routes.rb里的map.resources搞的快崩溃了,上网翻了一下午的资料都未果。 现在有点庆幸,又有点心冷。 一旦有什么问题不明白,喜欢上网翻一堆资料,打开一箩筐网页,然后一个一个边看边比较。 Route Manul Hypertext Transfer Protocol HTTP response status code 服务器状态代码含义 RESTful Rails Development RESTful Rails Development翻译 Discovering a world of Re ...
2007-04-24

每天一剂Rails良药之Make Pretty Graphs

关键字: Rails Make Pretty Graphs
rake stats可以生成统计代码行数,类的个数,方法的个数等信息,今天我们看看怎样生成rake stats的饼状图。 1,安装ImageMagick 什么新立得包管理器装一下或者apt-get装一下或者下载binary包安装 2,安装RMagick sudo gem install rmagick 3,安装Gruff sudo gem install gruff 4,写生成饼状stats图的controller class GraphController < ApplicationController require 'gruff' STA ...
2007-04-24

每天一剂Rails良药之Creating a Custom Form Builder

关键字: Rails Creating a Custom Form Builder
有时候我们希望我们的表单拥有一致的显示风格,今天我们就看看用Rails怎样创建一个Helper来自定义表单。 1,实现自己的FormBuilder 在app/helpers/application_helper.rb里加入以下代码: class TabularFormBuilder < ActionView::Helpers::FormBuilder (field_helpers - %w(check_box radio_button)).each do |selector| src = <<-END_SRC def #{sel ...
2007-04-24

每天一剂Rails良药之Debugging Ajax

关键字: Rails Debugging Ajax
1,Rails1.1及以上版本默认会在config/environments/development.rb里加上下列设置: config.action_view.debug_rjs = true 这样,当你使用RJS时,如果发生异常,则会有一些非常有用的JavaScript alerts。 2,使用下列方式调用Ajax: <% if ActionView::Base.debug_rjs %> <script language="JavaScript"> Ajax.Responders.register({ ...
2007-04-23

每天一剂Rails良药之Smart Pluralization

关键字: Rails Smart Pluralization
对英文网站,我们常常需要显示一个名词的复数形式。 而Rails就提供了一个称为Inflector的工具来计算该逻辑,并且ActionView有一个wrapper方法来处理常见的复数形式,如: There are <%= pluralize @recipes.size, "recipe" %>. 当你的网站不是使用English或者有一些比较特殊的复数规则时,我们可以在config/environment.rb里定义这些规则,如: Inflector.inflections do |inflect| inflect.plural /^(ox)$/i, '\1en' ...
2007-04-23

每天一剂Rails良药之Use Ajax to Trim Fast, Static Pages

关键字: Rails Use Ajax to Trim Fast, Static Pages
今天让我们看看怎样使用Rails和Ajax得到静态页面。 看下面这个页面: <ul> <li> <div id="product-1" class="product-overview"> <span class="title">Learn to Program (Chris Pine) <%= link_to_remote "detail", :update => 'product-1-detail', ...
2007-04-23

每天一剂Rails良药之Cheap and Easy Theme Support

关键字: Rails Cheap and Easy Theme Support
你可能需要给你的站点用户添加一个主题样式支持。 让我们看看用Rails实现该功能是多简单。 1,给User模型添加类型为string的style字段 2,修改app/views/layouts/application.rhtml <html> <head> <%= stylesheet_link_tag(session[:user].style || "default") %> </head> <body> <div id='main'> <div id ...
2007-04-23

每天一剂Rails良药之Live Search

关键字: Rails Live Search
这次我们看看Rails里text_field的auto_complete,即Live Search。 1,添加Recipe的Migration class AddRecipes < ActiveRecord::Migration def self.up create_table :recipes do |t| t.column :name, :string end end def self.down drop_table :recipes end end 2,添加SearchController c ...
2007-04-23

每天一剂Rails良药之Live Preview

关键字: Rails Live Preview
像蛙眼等有时候需要给用户提供预览查看,今天我们就来看看利用Rails和Prototype快捷的提供Live Preview功能。 1,在layout里加入prototype.js 如app/views/layouts/standard.rhtml: <html> <head> <%= javascript_include_tag "prototype" %> </head> <body> <%= yield %> </body> </html> 2,定义En ...
2007-04-22

每天一剂Rails良药之Lightning-Fast JavaScript Auto-completion

关键字: Rails Lightning-Fast JavaScript Auto-completion
Gmail中你输入收信人地址时会自动搜索并提示,速度很快,因为Gmail不是每次都从后台搜索,而是一开始就 把地址加载到页面中,然后在页面中匹配并搜索。让我们看看怎样在Rails里实现它。 1,准备搜索数据 我们创建app/controllers/book_controller.rb: class BookController < ApplicationController def authors_for_lookup @authors = Author.find(:all) @headers['content-type'] = 'text/javas ...
现在咱生活水平提高了,计算机硬件也上去了,所以ubuntu下装个VMware也用的起了。 本来可以用wine,但同事一致建议我装VMware,说wine有些兼容性怎么不好。 也罢。 下了个VMware Workstation 6.0 Beta for Linux包,同事有给我弄了个简版的Windows的iso包DEEPINXP.6.iso,上网搜了个序列号: Windows Serial Number: A8HC7-1GGR0-E4PD4-4T694 Linux Serial Number: A8033-17FKN-F5640-48QTE 刚兴奋不久,想试试招行专业版,结果给我报了个 ...
2007-04-20

试用Rails开源小论坛-Beast

关键字: Rails Beast
Beast is a small, light-weight forum in Rails with a scary name and a goal of around 500 lines of code when we're done. Getting Started with Beast: 1,下载源码 svn co http://svn.techno-weenie.net/projects/beast/trunk beast 2,安装RedCloth sudo gem install RedCloth 3,配置数据库 编辑database.yml 4,生成数据库表 ...
2007-04-20

学习svn命令

关键字: subversion
习惯Subclipse的GUI用法可不好,我们不能变成只会用工具的弱智程序员。 1,安装Subversion sudo apt-get install subversion 2,很好的中文参考使用Subversio进行版本控制,也有pdf版本的,可以慢慢看,边用边学。 尤其是Subversion命令行客户端svn这个命令要好好掌握。     svn子命令         svn add         svn bl ...
2007-04-20

每天一剂Rails良药之RJS

关键字: Rails RJS
本来题目应该为Update Multiple Page Elements With One Ajax Request,但蛙眼的博客标题字数有限,遂更名为RJS,因为这次主要了解的就是Rails的RJS。 让我们看看一个RJS的例子,通过一次Ajax请求灵活的更新页面中的多个元素。 1,新建Rails项目和一个rhtml 如app/views/ajax_fun/index.rhtml: <html> <head> <%= javascript_include_tag :defaults %> </head> <b ...
2007-04-20

每天一剂Rails良药之Creating a Drag-and-Drop Sortable List

关键字: Rails Creating a Drag-and-Drop Sortable List
今天来看看用Rails创建一个可拖拽的List。 1,创建Rails项目,搭建数据库 Migration: class AddPersonAndGroceryListsAndFoodItemsTables < ActiveRecord::Migration def self.up create_table :people do |t| t.column :name, :string end create_table :grocery_lists do |t| t.column :name, :string ...
2007-04-19

在ubuntu下试玩beryl

关键字: ubuntu beryl
公司用ubuntu的人不少,我深受影响,今天来装个beryl玩玩3D桌面,看看是是啥效果。 主要安装文档就是beryl的官方Wiki,我参考的安装文档主要就是Install Beryl on Ubuntu Edgy with nVidia这篇。 开始很轻松就装好了,结果高兴之余乱点Beryl管理器,把窗口管理器选成了Compiz,重启X 后一下就白屏了。白茫茫的雪阿。。。 想自己研究解决问题。 重装beryl,不行 重装nVidia驱动,不行 修改xorg.conf重启gdm,不行 downgrade beryl,不行 google一通,还是不行 最后估计是没有清除把窗口管理器选成了 ...
2007-04-18

每天一剂Rails良药之Making Your Own JavaScript Helper

关键字: Rails Making Your Own JavaScript Helper
上次我们在 每天一剂Rails良药之In-Place Form Editing里讲到In-Place编辑,大家意犹未尽吧! 但是现在只能支持text和textarea的In-Place Edit,如何添加一个对select的In-Place Edit呢? 或者说,我们怎样写自己的JavaScript Helper插件呢? 今天我们就在上篇文章的基础上写一个对Rails自带In-Place Editor的扩展,让它支持对select的In-Place Edit,并且了解一下如何写我们自己的JavaScript Helper。 1,了解Rails自带的InPlaceEditor并写我们自己的In ...
2007-04-17

每天一剂Rails良药之In-Place Form Editing

关键字: rails in-place form editing
看看蛙眼的博客分类管理,有点In Place Editing的意思,是否让用户感觉更方便呢? Rails有许多很小的好处,让人欲罢不能。 今天来看看Rails使用script.aculo.us让In Place Editing更简单,让你的应用更加Web2.0 1,新建Rails项目,配好数据库设置 rails test 2,添加contacts表 ruby script/generate migration AddContactsTable 然后修改001_add_contacts_table.rb: class AddContactsTable < Activ ...
WEBrick实在太慢,赶紧换个Mongrel Server吧 用RubyGems安装即可: sudo gem install mongrel 一路选择安装依赖库即可 在RadRails的Window->Preferences->Rails->Configuration里配置好Mongrel path即可New一个Mongrel Server来跑了 如果在Console下手动启动Mongrel的话,你需要先切换到app的根目录: cd myRailsApp mongrel_rails start | mongrel_rails start -d | mongrel_rails ...
2007-04-12

Rails里的Template Environment

关键字: Rails Template Environment
Rails的Template可以访问的对象 1,Controller里所有的实例变量 2,Controller Environment里的request, params, cookies, response, session, headers对象 3,表示当前的Controller的controller对象,这样则Template可以调用Controller里的public方法 4,表示模板根目录的base_path对象
2007-04-12

Rails response的几种方式

关键字: Rails rende send_filer redirect
1,Rendering Templates render(:text => string) render(:inline => string, [:type => "rhtml"|"rxml"]) render(:action => action_name) render(:file => path, [:use_full_path => true|false]) render(:template => name) render(:partial => name, ...) render(:nothing => true) render() 2,Sending Files and Other ...
2007-04-12

Rails里的Controller Environment

关键字: Rails Controller Environment
Action Pack的Controller建立的环境让我们快捷的访问一些对象: request 进来的request对象,它有如下属性/方法: domain() remoteip() env() method delete?,get?,head?,post?,put? params 包含request参数的hash-like对象,可以用params[:id]或params['id']访问,习惯用symbol访问 cookies 与request相关的cookies response 返回的response对象 session 表示当前session数据的hash-like对象 h ...
2007-04-12

Rails里的Magic Column Names

关键字: Rails Magic Column Names
Active Record有一些富有“魔力”的列名: created_at, created_on, updated_at, updated_on 在create或者update一行时Rails对_at形式的列用timestamp自动更新,对_on形式的列用date自动更新 lock_version 如果一个表有lock_version这个列,则Rails会跟踪一行的版本号并执行乐观锁 type 单表继承时跟踪一行的type id 表的默认主键名 xxx_id 对以复数形式的xxx命名的表的引用的默认外键名 xxx_count 对子表xxx维护一个计数器cache positio ...
hideto
搜索本博客
我的相册
A6bdc31c-c66e-468e-961e-9cc721e82adc-thumb
screenshot
共 1 张
存档
最新评论