2012-10-04 11 views
5

Mam obiekt, którego wartości są wszystkie pułapy, i chciałbym, aby pomocnik f.label wydrukował go jako wszystkie czapki - bez konieczności wykonywania Transformacja CSS.Dlaczego f.label przekształca łańcuch znaków "ALL" na "Wszystkie" cap

Teraz, jeśli mam ciąg AAPL w moim obiekcie, f.label wypluwa go jako Aapl.

Powodem, dla którego nie chcę używać transformacji CSS, jest to, że wartość obiektu nie musi ZAWSZE być wielka. Po prostu chcę, aby f.label wyprowadzał go dokładnie tak, jak jest przechowywany w db - najlepiej bez żadnych przesłuchań CSS.

Jak to zrobić?

Odpowiedz

12

To brzmi jak coś dzwoni humanize(). Wydaje się, że tak się stanie, gdy Rails tłumaczy nazwę elementu na tytuł etykiety. Prawdopodobnie powinieneś zdefiniować tekst etykiety wyraźnie w jego elemencie formularza.

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

lub nawet

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

Innym rozwiązaniem dla Ciebie może być zdolność tłumaczenie, które zapewnia Rails. Dotyczy to Railsów> 3.1!

W widoku:

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

W swojej en.yml:

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

Problem jest, że trzeba etykietę być generowane dynamicznie. Na przykład, biorąc pod uwagę, że atrybut to 'topic.name'. Jak by to działało? Oczywiście "f.label (topic.name, topic.name)" nie działa. – marcamillion

+0

Ponadto generuję te etykiety w zbiorze pól wyboru - tak, aby etykieta znajdowała się wewnątrz "każdego" o zmiennej lokalnej "topic" przekazywanej do każdego bloku. – marcamillion

+0

Można więc utworzyć metodę pomocniczą, aby utworzyć tytuł etykiety z określonego pola/pola wyboru. Nie chcę być nieprzyjazny, ale to nie jest część tego pytania. Powinieneś zadać nowe pytanie i podać w nim kod źródłowy, aby wyjaśnić sytuację. – Robin

2

Spróbuj tego:

f.label(topic).upcase.html_safe 
Powiązane problemy