form_for上的类标签自动化?这种语法的最佳实践是什么?

时间:2014-08-24 12:16:56

标签: css ruby-on-rails twitter-bootstrap

我正在使用bootstrap CSS开发Rails应用程序,取决于DRY概念,这种形式可以简化吗?

<%= form_for @user , :html => {:class => "form-horizontal"} do |f| %>
<fieldset>
<legend>Sign Up</legend>
  <div class="form-group">
    <%= f.label :email ,:class=>"control-label" %><br />

    <%= f.text_field :email, :class =>"form-control", :placeholder=>"Email" %>
  </div>
  <div class="form-group">
    <%= f.label :password ,:class=>"control-label" %><br />

    <%= f.password_field :password, :class =>"form-control", :placeholder=>"Password" %>

  </div>
  <div class="form-group">
    <%= f.label :password_confirmation,:class=>"control-label" %><br/>

    <%= f.password_field :password_confirmation , :class =>"form-control", :placeholder=>"Confirm Password" %>

  </div>
<%= f.submit 'Submit', :class => 'btn btn-primary' %>
</fieldset>
<% end %>

我的意思是标记fieldsetlegend:class=>"control-label"和其他标记。

1 个答案:

答案 0 :(得分:0)

您需要的是custom form builder。基本点是封装字段装饰(在许多情况下甚至标记),以便您获得与上面代码类似的输出,如下所示:

<%= form_for @user, builder: MyFormBuilder do |f| %>
  <%= f.input :email %>
  <%= f.input :password %>
  <%= f.input :password_confirmation %>
  <%= f.button :submit %>
<% end %>

many tutorials on how to build your own,它非常方便,是学习更多内容的好方法。如果您需要准备好的解决方案,请查看the simple_form gem