Monkey Patch让Simple Form支持Bootstrap

Twitter推出[url=https://github.com/twitter/bootstrap]Bootstrap[/url]有段时间了,一直关注,还没有机会用一下。刚好看到xdite的这篇[url=http://blog.xdite.net/posts/2011/11/10/simple-form-your-form-framework/]《Simple Form - 你的 Form Framework》[/url],我就准备把现在项目的难看后台换成Bootstrap。不过xdite似乎在写完这篇blog之后,把他的[url=https://github.com/xdite/bootstrap-rails]bootstrap-rails[/url]更新了,blog中提到的Custom Form Builder代码都没有了。我就想,自己去扩展一个Form Builder,然后再把代码中的simple_form_for都换成bootstrap_form_for,不如想办法不改动现有页面模板,来做这个事情。

在进入正题之前,再说个好消息,即将推出的Simple Form 2.0简直酷的一塌糊涂。看这里:
[url]https://github.com/plataformatec/simple_form/wiki/Upgrading-to-Simple-Form-2.0[/url]

好了,回归正题。在[url=http://book.douban.com/subject/6756090/]《松本行弘的程序世界》[/url]中,Matz讲了Monkey Patch这个东西,这次就要让这只猴子出手了。给我的感觉,Monkey Patch的境遇有点类似著名的goto语句,有好处,有坏处,所以我们只用一点点。

在Rails项目的config/initializers/下新建个文件simple_form_monkeypatch.rb:
# encoding: utf-8
module SimpleForm
module Components
module LabelInput
def label_input
(options[:label] == false ? "" : label) + "<div class='input'>#{input}</div>".html_safe
end
end
end
end


然后将config/initializers/simple_form.rb中的设置修改一下:
config.wrapper_class = :clearfix


好了,这样就完成了。如果你不希望所有的input周围都加上div.input的话,可以自己扩展下simple_form的设置选项,然后在label_input方法中做个判断。

按照这种方法来做,有一个好处就是等到Simple Form 2.0推出的时候,我们不需要去修改页面模板,直接把这个Monkey Patch删除掉就可以了。期待Simple Form 2.0 ...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值