2012-09-24 10 views
13

Staram się produkować regularnym kształcie simpleformProsta forma: czy można usunąć etykiety i zastąpić je symbolami zastępczymi za pomocą etykiet i18n?

= simple_form_for [:hq, @team, @order] do |f| 
    .tickets 
    = f.select :tickets, :aaa => "aaa" 
    = render "ticket" 


    .details 
    .left 
     = f.input :address1 
     = f.input :address2 
     = f.input :state 
     = f.input :country 
     = f.input :email 
    .right 
     = f.input :comments 

Ale chcę wejść nie powinny być wykonane z etykietą, tylko tytuł „Adres wiersz 1” w zastępczy.

Wiem, że mogę to zrobić z f.input :address1, :placeholder => "whatever", :label => "", ale chciałbym, aby był konfigurowalny z wrapper i wziąć etykietę formularza wartości i18n, nie placeholder.

+7

zastosowanie: label => false, a nie: label => "", ten ostatni będzie nadal generować znacznik label w DOM. – mmvie

+0

Myślę, że [this] [1] jest odpowiedzią, której szukasz. [1]: http://stackoverflow.com/a/18199780/186145 – wspruijt

Odpowiedz

-2

Jeśli chcesz użyć JavaScript, tutaj jest urywek jQuery, że spełnia swoje zadanie:

$.each($(".left .input"), function() { 
    var label = $("label",$(this)).text(); 
    $("label",$(this)).hide(); 
    $("input",$(this)).attr("placeholder",label); 
}); 

Główną zaletą korzystania js dla tej sprawy jest to, że wynik pozostaje zgodny screen-czytniki (będą przeczytać etykieta, ponieważ nie będą uruchamiać js).

+6

że zgadzają się z tym. Istnieją sposoby, aby to osiągnąć w prostej formie i bez javascript. – Senjai

+0

@Senjai stary komentarz wiem, ale mógłbyś pójść do dalszych szczegółów lub link o tym, jak możesz to zrobić zamiast tego? – Huw

+1

Przeprosiny zignorować to rozwiązanie przez zduplikowany link powyżej, patrz [tutaj] (https://stackoverflow.com/questions/18077082/how-to-use-placeholders-instead-of-labels-in-simple-form/18199780 # 18199780) – Huw

21

Spróbuj wykonać następujące czynności:

f.input :address1, placeholder: "Address Line 1", label: false 
Powiązane problemy