在同时使用日期选择器和TabPanel的时候,日期选择老是跑到TabPanel的下面,这时才发现z-index的作用,可以调整层次顺序,把日期选择器调到最上面就好了,数值越大越在上。
原来在symfony下用的一个TabPanel的Helper,移植到ROR下面,同样好用,本来Symfony就是ROR的思想,所以原来的很多东西都可以用上。
tab_helper.rb
- module TabHelper
- def tabMainJS (mid, id, page_id, title,main_class='tab-pane', page_class='tab-page')
- s = ''
- s+= "<div class='#{main_class}' id='#{id}'>\n"
- s+="<script type='text/javascript'>\n"
- s+="#{mid} = new WebFXTabPane( document.getElementById( '#{id}' ) );\n"
- s+="</script>\n"
- s+="<div class='#{page_class}' id='#{page_id}'>\n"
- s+="<h2 class='tab'>#{title}</h2>\n"
- s+="<script type='text/javascript'>#{mid}.addTabPage( document.getElementById( '#{page_id}' ) );</script>\n"
- end
- def tabPageOpenClose(mid, page_id, title, page_class='tab-page')
- s = ''
- s+="</div>\n"
- s+="<div class='#{page_class}' id='#{page_id}'>\n"
- s+="<h2 class='tab'>#{title}</h2>\n"
- s+="<script type='text/javascript'>#{mid}.addTabPage( document.getElementById( '#{page_id}' ) );</script>\n"
- end
- def tabInit(mid='', n='')
- s = ""
- s+="</div>\n"
- s+="<script type='text/javascript'>\n"
- s+="setupAllTabs();\n"
- unless n.blank?
- s+="#{mid}.setSelectedIndex('#{n}');"
- end
- s+="</script>\n"
- s+="</div>\n"
- end
- end
做分层数据表时用了一下感觉不错,使用了一个增强插件Better nested set,acts_as_nested_set,把下面文档里的数据分层都用上了。
这几天好好的研究了一下struts2,spring2,hibernate3,发现做一个功能要搞n多东西,过于复杂,适合大项目和大团队。
Ruby On Rails可以快速的功能实现,对于现在这个时间就是金钱、需求变化迅速的时代,正合我意。
之前我使用的php framework—symfony就很大程度上参考了ROR的实现,包括现在的Grails,都在模仿ROR的模式。
1、页面部分
增加
- <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
2、数据库部分
数据库链接配置文件里增加一行
encoding: utf8
对一个60万条记录的表进行测试,用mysql like ‘%关键词%’ 的方式模糊进行查询一下,基本在1.9秒左右,这种模糊检索方式不走索引,建不建索引都一样;用 compass为表建索引,模糊检索达到0.001秒 级别,可以说是质的飞跃。
compass是建立在Lucene的基础之上,是一个强大的,事务的,高性能的对象/搜索引擎映射(OSEM:object/search engine mapping)与一个Java持久层框架.Compass包括:
* 搜索引擎抽象层(使用Lucene),
* OSEM (Object/Search Engine Mapping) 支持,
* 事务管理,
* 类似于Google的简单关键字查询语言,
* 可扩展与模块化的框架,
* 简单的API.