`

Monkey Patch让Simple Form支持Bootstrap

阅读更多
Twitter推出Bootstrap有段时间了,一直关注,还没有机会用一下。刚好看到xdite的这篇《Simple Form - 你的 Form Framework》,我就准备把现在项目的难看后台换成Bootstrap。不过xdite似乎在写完这篇blog之后,把他的bootstrap-rails更新了,blog中提到的Custom Form Builder代码都没有了。我就想,自己去扩展一个Form Builder,然后再把代码中的simple_form_for都换成bootstrap_form_for,不如想办法不改动现有页面模板,来做这个事情。

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

好了,回归正题。在《松本行弘的程序世界》中,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 ...
分享到:
评论
2 楼 tiroc 2011-12-06  
Hooopo 写道
只用一点点..

goto我可是一点点都不敢用
1 楼 Hooopo 2011-12-06  
只用一点点..

相关推荐

Global site tag (gtag.js) - Google Analytics