用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_form2.修改Gemfile:
Java代码
gem "simple_form"3.运行generator,会生成所需文件
Java代码
rails generate simple_form:installJava代码
#生成文件 create config/initializers/simple_form.rb create config/locales/simple_form.en.yml create lib/templates/erb/scaffold/_form.html.erb4.使用,以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的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did42935