好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

用simple from暂不用formtastic

用simple from暂不用formtastic

2010 - 09 - 25

Formbuilder simple_form使用 博客分类: rails

Java ActiveRecord Rails F# MongoDB

Rails中表单用的比较多,其中 formtastic 是一个比较简单的构建表单的gem.我个人用了一阵子,不太喜欢它生成的标签,后来发现了 Simple_form ,相比formtastic,可以更好自定义标签,有更大的灵活性。
关于 formtastic ,railscasts上有相关教程,可参考 railscasts
1.安装gem

Java代码  

sudo gem install simple_form  



2.修改Gemfile:

Java代码  

gem  "simple_form"   



3.运行generator,会生成所需文件

Java代码  

rails generate simple_form:install  


Java代码  

#生成文件     create  config/initializers/simple_form.rb     create  config/locales/simple_form.en.yml     create  lib/templates/erb/scaffold/_form.html.erb  



4.使用,以User model为例
 

Java代码  

<%= simple_form_for  @user   do  |f| %>     <%= f.input :username %>     <%= f.input :password%>     <%= f.input :email%>     <%= f.input :profile,:as=>:text%> #as使用     <%= f.input :age, :collection =>  18 .. 60  , :prompt =>  "Select your age" %> #collection使用     <%= f.simple_fields_for :adress  do  |adress_form| %>  #simple_fields_for使用         <%= adress_form.input :name %>     <% end %>     <%= f.button :submit %>   <% end %>  


  如果 不想生成 label,可以使其设置为false
 

Java代码  

<%= f.input :username,:label=> false  %>  


  同样,如果想使required为false,

Java代码  

<%= f.input :username, :required =>  false  %>  



5.关于as
  在activerecord下,会自动对应相关映射,例如:string生成单行文本,text生成多行文本,不过如果使用mongodb,我使用的是mongoid,没有text
类型,全是string,所以要自己手动as,例如
 

Java代码  

<%= f.input :profile,:as=>:text%>  



6. Associations 使用
  

Java代码  

class  User < ActiveRecord::Base       belongs_to :company       has_and_belongs_to_many :roles     end         class  Company < ActiveRecord::Base       has_many :users     end         class  Role < ActiveRecord::Base       has_and_belongs_to_many :users     end       


  表单中我们可以使用
  

Java代码  

<%= simple_form_for  @user   do  |f| %>      <%= f.input :name %>      <%= f.association :company %>      <%= f.association :roles %>      <%= f.button :submit %>    <% end %>  



7.配置 config/initializers/simple_form.rb
   Wrapper,如果想修改生成的标签为P(默认为div),只要修改
  

Java代码  

SimpleForm.wrapper_tag = :p  


 
   默认情况下
 

Java代码  

config测试数据ponents = [ :label_input, :hint,:error]  


  如果不想使用error,只要去掉 即可
  

Java代码  

config测试数据ponents = [ :label_input, :hint]  


   更多配置可自行参考文件

8.国际化,只要修改对应本地化文件即可,

Java代码  

zh:     simple_form:       labels:         user:           username:  '用户名'            password:  '密码'        hints:         user:           username:  '登录用户名.'            password:  '输入正确的字符.'        placeholders:         user:           username:  '你的用户名'            password:  '****'   


9. 和formtastic的比较
    我个人比较喜欢 simple_form,生成的代码简洁些,更加灵活,可自定义性强。

10.textmate支持
    formtastic: formtastic_tmbundle
    simple_form: simple_form_tmbundle

查看更多关于用simple from暂不用formtastic的详细内容...

  阅读:41次

上一篇: ORDER BY的问题

下一篇:DBeaver