2012-03-12 35 views
4

我正在開發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

你會注意到,標籤文字在意大利,誰設計提供本地化的團隊成員努力尋找如何做到這一點,我不想強​​迫他再次引入新的本地化字符串。

我知道的好的事實FormBuidlerlabel方法接受一個塊作爲參數,所以我可以做

<% 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_objectlabel_tag呈現。

在深入研究源代碼挖掘和無睡眠之夜之前,我決定等一會兒,詢問StackOverflow的lifesafer社區以尋求幫助。

我錯過了什麼嗎?我用錯誤的方式打電話給f.label?是否缺少一些參數?

謝謝!

+0

我有與自舉相同的問題。我最終只是制定一個CSS規則來覆蓋bootstrap:label {display:inline-block; }也許不是最優雅的解決方案,但它的工作。 – kclair 2012-03-12 23:36:45

+0

看看這個問題:http://stackoverflow.com/questions/2457167/nest-input-inside-f-label-rails-form-generation 也許是有用的;) – Mattyx 2012-03-13 01:09:14

+0

@Mattyx是感謝,我已經知道這個問題。但它很古老,並表示Rails 3.1不支持塊,這在Rails 3.1中是錯誤的。另外我希望能夠用vanilla Rails的語法做到這一點 – mokagio 2012-03-13 06:48:10

回答

0

如果你想在同一行上的標籤和複選框,你必須包括.FORM內聯在

<form class="form-inline"> 
    <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"> 
</form> 

http://jsfiddle.net/baptme/66TJY/

<%= form_tag(:class => "form-inline") %> 
5

我不知道你是否有這個工作...

在軌道上運行3.2.6這是我不得不這樣做:

<%= f.label :remember_me do %> 
    <%= f.check_box :remember_me %> 
    Remember Me? 
<% end %> 

我希望能幫助你,因爲我來到這裏尋找的答案完全相同的問題,找不到它,除了通過試驗和錯誤。