saberma

分享技术实践,创业历程

项目说明

2009-07-29

工作流

#经考查,工作流引擎ruote是异步机制,无法保证业务实体与待办事项的处于同一事务
#因此,改用自己定义的流程程序
#相关流程代码放置在event.rb中

枚举值

#枚举值统一放置在config/initializes/enum.rb中
script/console
#获取"来电目的",返回值可作为option_for_select方法的参数
>> Enum.aim
=> [["求助", "1"], ["投诉", "2"], ["咨询", "3"], ["建议", "4"], ["举报", "5"], ["其他", "9"]]
#获取value=1的来电目的
>> Enum.aim 1
=> "求助"
#页面调用1
select:
f.select :agree Enum.sf
radio:
f.radio_enum :xingbie, 'sex'
#页面调用2(字段名与枚举类型名相同)
select:
f.select :aim
radio:
f.radio_enum :sex

#查看页面调用
@call.agree_enum_sf
#查看页面调用(字段名与枚举类型名相同)
@call.aim_enum

多行文本内容查看

#页面显示时应调用,以支持换行的显示(处理过程、往来记录的不用换行)
=simple_format @conversation.content

日期格式

#统一放置在config/initializes/datetime_format.rb中
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
  :without_year => "%m-%d %H:%M:%S"
)
#创建时间格式化为"03-23 10:10:10"
created_at.to_s(:without_year)
#注意如果是日期类型的,应将格式放在
ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!(
  ::short => "%Y-%m-%d"
)
#注意:
#日期在页面显示时,要调用d方法,传入日期
#避免连接Oracle时,显示为英文格式
d conversation.finished_date

Rails核心方法重载

统一放在config/initializers目录下

#对于视图层方法的重构放在view_helper.rb

防止Form重复提交

项目中form提交方式分两种

  1. 普通提交,提交按钮调用link_to_submit方法,可参考users/new.haml
  2. ajax后台提交,提交按钮调用link_to_remote_submit方法,可参考roles/new.haml

两个方法都支持参数label,用于指定按钮显示名称,默认为"保存"
如link_to_submit(:commit),则显示"提交"

blog comments powered by Disqus
Fork me on GitHub