2016-07-23 114 views
0

我有一個簡單的表單。一切工作都很好,直到我想要添加關聯表單。該協會本身運作良好,所以我會跳過這一點。保存數據的作品。問題在於異常情況下輸入類的控制。簡單的表單關聯與默認輸入類型衝突

<%= simple_form_for @fabmoment do |f| %> 
 
     \t 
 
    <%= f.input_field :title %> 
 
    <%= f.label :title %> 
 
    <%= f.error :title %> 
 
    <%= f.input_field :description, rows: 7 %> 
 
    <%= f.label :description %> 
 
    <%= f.error :description %><br><br> 
 
    <%= f.association :machines, as: :check_boxes, 
 
           :label_method => lambda { |m| " #{m.name}" } %> 
 
    
 
<% end %>

正如你看到的,我在這裏我把什麼很具體的,這是因爲我的CSS庫(W3.CSS)的。問題是,在我的初始化程序中,我將"w3-input"的類作爲輸入的默認值。但是這不適用於我的關聯複選框。目前我看到標籤和輸入複選框不是內聯的。

如果"w3-input"類不在那裏,情況就不會如此。但我無法刪除它,我只能像item_wrapper_tagitem_wrapper_class一樣深。

這個他非常討厭。我昨天一直忙於此。

爲什麼我不能做這樣的事情:

<%= f.association :machines, as: :check_boxes do |m| %> 
 

 
    <%= m.check_box :machine_id, class: 'w3-check' %> 
 
    <%= m.label :name, class: 'w3-validate' %> 
 

 
<% end %>

回答

0

原來有是通過HTML屬性由input_htmllabel_html到simple_form標籤的選項。 你可以找到從Here 所有選項爲了您上面的問題,你可以這樣做

<%= f.association :machines, as: :check_boxes, input_html:{class: 'w3-check'} ,label_html: {class: 'w3-validate'}%> 

這將增加在所有計算機上的複選框,並w3-validate在所有這些複選框的標籤w3-check類,然後你可以風格相應

+0

隨着input_html我終於能夠達到項目的輸入標籤。謝謝,這解決了我80%的問題。我仍然無法達到標籤標籤。這個label_html將目標放在複選框列表的上方。這很好,但我需要一個項目的標籤來確實添加'w3-validate'。 –

+0

你可以使用'wrapper_html:{class:'checkbox_container'}'這會將這個類添加到所有複選框的父類中。然後,您可以通過'.checkbox_container label {border:1px solid gray}'應用'css'。這將適用於所有與'機器'相對應的標籤上的css –

+0

謝謝。我覺得這有點麻煩,但如果沒有其他方式做這件事比我想它將不得不做。 btw與sass是不是有一種方法來擴展預定義類的CSS選擇器?無論如何,我可以自己看看這個。 –