2015-09-26 21 views
2

我正在使用一些CSS表單元素,這些元素使用:checked樣式,例如。Make Rails的field_with_error'不適用於某些輸入

input:checked + label { 
    background-color: green; 
} 

,其中相應的HTML(簡化的例子)將是:

<input type="checkbox"> 
<label>My Checkbox</label> 

不幸的是,:檢查造型肆虐時.field_with_errors進場,因爲它創造了兩個元素圍繞一個div,像所以:

<div class="field_with_errors"> 
    <input type="checkbox"> 
</div> 
<div class="field_with_errors"> 
    <label>My Checkbox</label> 
</div> 

據我所知,鑑於HTML結構,根據複選框是否被選中,不再可能設置標籤的樣式。

我無法在標籤或輸入上完全刪除field_with_errors,因爲我正在使用的應用程序的傳統方面依賴於它。

所以我想知道是否可以簡單地做到這一點,以便field_with_errors不隱藏元素。我還不知道Ruby/Rails有多少,但我知道(當然)它運行的是前頁加載。我仍然希望沒有希望,也許我沒有想到的東西:-D。

也歡迎任何替代方法,但同樣有效的方法。

回答

2

您可以使用原始HTML並生成複選框並標記自己,而無需使用視圖助手。名稱應該是model[field],並且您必須確保它在未選中時設置正確的值,因爲瀏覽器不會發回未選中的複選框。

+0

哇,這聽起來像這可能工作!我當前的單選按鈕結構如下:'<%= f.radio_button:my_field,index%>'(它在一個循環內,因此'index'存在)。如何讓我從':my_field' var獲取名稱? – Pete

+0

查看Rails在瀏覽器中生成的HTML源代碼並複製該代碼。 – Chloe

+0

我可以這樣做 - 但我更喜歡(如果可能)從「:my_field」var動態地拉動它。由於'debug()'似乎沒有顯示,所以我不知道':my_field'是什麼。請原諒我的無知! – Pete

0

您可以添加一個汽車規則,該規則重新定義了類field_with_errors的div而不是顯示塊。

div.field_with_errors { display: inline-block; } 
+1

'display:block;'不是問題。問題是你不能在':checked'元素上使用CSS選擇器來訪問單獨容器的子div。感謝您的意見! – Pete

+0

您應該可以編寫仍可應用的css規則。或者,您可以嘗試不使用導軌助手來生成標籤。類似於 Coenwulf

+0

不幸的是,CSS是不可能的。 http://stackoverflow.com/a/32793254/1809762但是,是的!原始的解決方案是我一起去的! – Pete

相關問題