• 用simple from暂不用formtastic


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


    2.修改Gemfile:
    Java代码  收藏代码
    1. gem "simple_form"  


    3.运行generator,会生成所需文件
    Java代码  收藏代码
    1. rails generate simple_form:install  

    Java代码  收藏代码
    1. #生成文件   
    2.  create  config/initializers/simple_form.rb  
    3.   create  config/locales/simple_form.en.yml  
    4.   create  lib/templates/erb/scaffold/_form.html.erb  


    4.使用,以User model为例
     
    Java代码  收藏代码
    1. <%= simple_form_for @user do |f| %>  
    2.   <%= f.input :username %>  
    3.   <%= f.input :password%>  
    4.   <%= f.input :email%>  
    5.   <%= f.input :profile,:as=>:text%> #as使用  
    6.   <%= f.input :age, :collection => 18..60 , :prompt => "Select your age"%> #collection使用  
    7.   <%= f.simple_fields_for :adress do |adress_form| %>  #simple_fields_for使用  
    8.       <%= adress_form.input :name %>  
    9.   <% end %>  
    10.   <%= f.button :submit %>  
    11. <% end %>  

      如果 不想生成 label,可以使其设置为false
     
    Java代码  收藏代码
    1. <%= f.input :username,:label=>false %>  

      同样,如果想使required为false,
    Java代码  收藏代码
    1. <%= f.input :username, :required => false %>  


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


    6. Associations 使用
      
    Java代码  收藏代码
    1. class User < ActiveRecord::Base  
    2.     belongs_to :company  
    3.     has_and_belongs_to_many :roles  
    4.   end  
    5.   
    6.   class Company < ActiveRecord::Base  
    7.     has_many :users  
    8.   end  
    9.   
    10.   class Role < ActiveRecord::Base  
    11.     has_and_belongs_to_many :users  
    12.   end  
    13.     

      表单中我们可以使用
      
    Java代码  收藏代码
    1. <%= simple_form_for @user do |f| %>  
    2.    <%= f.input :name %>  
    3.    <%= f.association :company %>  
    4.    <%= f.association :roles %>  
    5.    <%= f.button :submit %>  
    6.  <% end %>  


    7.配置 config/initializers/simple_form.rb
       Wrapper,如果想修改生成的标签为P(默认为div),只要修改
      
    Java代码  收藏代码
    1. SimpleForm.wrapper_tag = :p  

     
       默认情况下
     
    Java代码  收藏代码
    1. config.components = [ :label_input, :hint,:error]  

      如果不想使用error,只要去掉 即可
      
    Java代码  收藏代码
    1. config.components = [ :label_input, :hint]  

       更多配置可自行参考文件

    8.国际化,只要修改对应本地化文件即可,
    Java代码  收藏代码
    1. zh:  
    2.   simple_form:  
    3.     labels:  
    4.       user:  
    5.         username: '用户名'  
    6.         password: '密码'  
    7.     hints:  
    8.       user:  
    9.         username: '登录用户名.'  
    10.         password: '输入正确的字符.'  
    11.     placeholders:  
    12.       user:  
    13.         username: '你的用户名'  
    14.         password: '****'  

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

    10.textmate支持
        formtastic:formtastic_tmbundle
        simple_form:simple_form_tmbundle

  • 相关阅读:
    SDN3
    SDN2
    SDN1
    软工实践5
    2019 SDN上机第二次作业
    2019 SDN上机第一次作业
    软件工程实践2019第五次作业
    软件工程实践2019第四次作业
    软件工程实践2019第三次作业
    软件工程实践2019第二次作业
  • 原文地址:https://www.cnblogs.com/lexus/p/2148992.html
Copyright © 2020-2023  润新知