我有一堆要水平渲染的部分,使用 form-inline (twitter bootstrap)。如果单独指定它们可以正常工作,但是当使用 :defaults 指定时,该类不会出现。
%ul.nav.nav-tabs#tab
%li= link_to "General", "#client_tab1", 'data-toggle'=>"tab"
%li= link_to "Applications", "#client_tab2", 'data-toggle'=>"tab"
= simple_form_for @client, defaults:{input_html:{class:'form-inline'}}, :html=>{:class=>"client tab-content"} do |f|
#client_tab1.tab-pane.fade.in.active
= render :partial => "client", :locals => {:f => f}
#client_tab2.tab-pane.fade.in
= render :partial => "applications/applications", :locals => {:f => f}
.actions
= f.button :submit, class:"btn-primary", value: "Save"
部分看起来像:
.status
.span3
= f.label :status
= f.collection_select :status_id, selection_list(Status), :last, :first
%br
= f.input :open_date, :as => :jdate
%br
= f.label :assigned_to
= f.collection_select :assigned_to_id, selection_list(User), :last, :first
%br
.form-inline
= f.label :assistant
= f.collection_select :assistant_id, selection_list(User), :last, :first
%br
在上面,使用明确的 .form-inline,一切都按预期工作。但是根据https://github.com/plataformatec/simple_form下面的示例代码, :defaults 中定义的类应该应用于所有方法。事实上,他们不是。
<%= simple_form_for @user, :defaults => { :input_html => { :class => 'default_class' } } do |f| %>
<%= f.input :username, :input_html => { :class => 'special' } %>
<%= f.input :password, :input_html => { :maxlength => 20 } %>
<%= f.input :remember_me, :input_html => { :value => '1' } %>
<%= f.button :submit %>
<% end %>
谁能解释为什么会这样或者我做错了什么?