Formbuilder simple_form使用

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


2.修改Gemfile:
 gem "simple_form"


3.运行generator,会生成所需文件
rails generate simple_form:install

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


4.使用,以User model为例
 
  <%= 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
 
    <%= f.input :username,:label=>false %>
 

  同样,如果想使required为false,
   <%= f.input :username, :required => false %>


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


6. Associations 使用
  
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
  

  表单中我们可以使用
  
 <%= 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),只要修改
  
SimpleForm.wrapper_tag = :p

 
   默认情况下
 
config.components = [ :label_input, :hint,:error]

  如果不想使用error,只要去掉 即可
  
config.components = [ :label_input, :hint]

   更多配置可自行参考文件

8.国际化,只要修改对应本地化文件即可,
  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


-------
继续打标记:
转载注明: javaeye-- doabit..
----------------------------

你可能感兴趣的:(java,mongodb,F#,Rails,ActiveRecord)