form-inline (twitter ブートストラップ) を使用して、水平方向にレンダリングしたいパーシャルがたくさんあります。個別に指定した場合は正常に動作しますが、: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 %>
これがなぜなのか、または私が間違っていることを誰かが説明できますか?