2012-10-04 111 views
5

我有一個對象,其值都是大寫字母,我希望f.label幫助程序將它打印爲全部大寫字符 - 無需執行CSS轉換。爲什麼f.label轉換'ALL'將字符串轉換爲'All'大寫字符

現在,如果我在我的對象中有字符串AAPL,則f.label將其吐出爲Aapl

我不想使用CSS轉換的原因是因爲對象的值不總是需要全部大寫。我只想讓f.label將它存儲在數據庫中完全一樣 - 最好沒有任何CSS shenanigans。

我該怎麼做?

回答

12

這聽起來像是在呼喚humanize()。當Rails將元素名稱轉換爲標籤標題時,這似乎發生了。可能您應該將標籤的文本定義爲表單元素。

<%= f.label(:aapl, 'AAPL') %> 

甚至

<%= f.label(:aapl, @yourVar) %> 

你的另一個選擇可能是翻譯能力,這Rails提供。這對於Rails> 3.1是有效的!

在你看來:

<% form_for @post do |f| %> 
    <%= f.label :title %> 
    <%= f.text_field :title %> 
    <%= f.submit %> 
<% end %> 

在你en.yml:

en: 
    helpers: 
    label: 
     post: 
     title: 'Your Title' 
+0

的問題是,我需要的標籤,以動態地生成。例如,假設屬性是'topic.name'。這將如何工作?顯然'f.label(topic.name,topic.name)'不起作用。 – marcamillion

+0

此外,我在複選框集合內生成這些標籤 - 因此標籤位於每個塊中的局部變量「topic」的「each」中。 – marcamillion

+0

所以你可以創建一個幫助器方法來從特定的字段/複選框創建標籤標題。我不想變得不友善,但這不是這個問題的一部分。你應該問一個新的問題,並提供一些源代碼來清除這種情況。 – Robin

2

試試這個:

f.label(topic).upcase.html_safe