我正在開發Rails 3.1應用程序的前端部分。我們使用Twitter Bootstrap作爲CSS框架,Devise作爲身份驗證管理器和I18n本地化寶石。Rails,使用FormBuilder和Devise嵌套HTML並使用引導標記的標籤
這是與它的標籤
<%= f.label :remember_me %>
<%= f.check_box :remember_me %>
一個複選框色器件的語法和這當然是生成的HTML
<label for="user_remember_me">Ricordati di me</label>
<input name="user[remember_me]" type="hidden" value="0">
<input id="user_remember_me" name="user[remember_me]" type="checkbox" value="1">
由於引導添加此規則標籤display: block
,標籤和該複選框不在同一行中。有在同一行,我需要一個HTML輸出這樣
<label for="user_remember_me">
Ricordati di me
<input name="user[remember_me]" type="hidden" value="0">
<input id="user_remember_me" name="user[remember_me]" type="checkbox" value="1">
</label>
如所示的forms markup documentation
你會注意到,標籤文字在意大利,誰設計提供本地化的團隊成員努力尋找如何做到這一點,我不想強迫他再次引入新的本地化字符串。
我知道的好的事實FormBuidler
label
方法接受一個塊作爲參數,所以我可以做
<% f.label :remeber_me do %>
<%= f.check_box :remember_me %>
<% end %>
但這產生的HTML輸出whitout標籤! OO 具體而言,這是我所得到的:
<input name="user[remember_me]" type="hidden" value="0">
<input id="user_remember_me" name="user[remember_me]" type="checkbox" value="1">
我試圖在源代碼看,f.label
method調用label
method,但我只可以看到,如果有一個塊沒有文本將被打印出來,並標籤和塊將由template_object
的label_tag
呈現。
在深入研究源代碼挖掘和無睡眠之夜之前,我決定等一會兒,詢問StackOverflow的lifesafer社區以尋求幫助。
我錯過了什麼嗎?我用錯誤的方式打電話給f.label
?是否缺少一些參數?
謝謝!
我有與自舉相同的問題。我最終只是制定一個CSS規則來覆蓋bootstrap:label {display:inline-block; }也許不是最優雅的解決方案,但它的工作。 – kclair 2012-03-12 23:36:45
看看這個問題:http://stackoverflow.com/questions/2457167/nest-input-inside-f-label-rails-form-generation 也許是有用的;) – Mattyx 2012-03-13 01:09:14
@Mattyx是感謝,我已經知道這個問題。但它很古老,並表示Rails 3.1不支持塊,這在Rails 3.1中是錯誤的。另外我希望能夠用vanilla Rails的語法做到這一點 – mokagio 2012-03-13 06:48:10