Formbuilder simple_form使用

Rails中表单用的比较多,其中[url=http://github.com/justinfrench/formtastic]formtastic[/url]是一个比较简单的构建表单的gem.我个人用了一阵子,不太喜欢它生成的标签,后来发现了[url=http://github.com/plataformatec/simple_form]Simple_form[/url],相比formtastic,可以更好自定义标签,有更大的灵活性。
关于 formtastic ,railscasts上有相关教程,可参考[url=http://railscasts.com/episodes/184-formtastic-part-1]railscasts[/url]
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:[url=http://github.com/grimen/formtastic_tmbundle]formtastic_tmbundle[/url]
simple_form:[url=http://github.com/doabit/simple_form_tmbundle]simple_form_tmbundle[/url]


-------
继续打标记:
转载注明:[url=http://www.iteye.com]javaeye[/url]--[url=http://doabit.iteye.com/]doabit[/url]..
----------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值