2012-05-23 10 views
14

Desidero utilizzare le etichette per gli elementi di raccolta (ad esempio le loro traduzioni).Etichette di raccolta simple_form

= simple_form_for(@client) do |f| 
    = f.error_notification 
    .form-inputs 
     = f.input :name, label: t('client.name') 
     = f.input :level, collection: ['a', 'b', 'c'], 
     label_method: ???? 
     label: t('client.level') 
    .form-actions 
     = f.button :submit, value: t('client.submit') 

sto cercando di capire, cosa usare per label_method sopra. Mi piacerebbe avere label_method per mappare le traduzioni come in map {|s| t("client.#{s}")}.

risposta

41

Se non si dispone già di un metodo di un'etichetta, è possibile passare un lambda per ottenere il risultato che si desidera

label_method: ->(obj){ t("client.#{obj}") } 
+0

Perfetto, grazie! Vale la pena sottolineare quello che all'inizio mi è sfuggito: cambia tra virgolette ('" ') attorno alla stringa in modo che esegua la sostituzione' # {obj} ' –

+0

Ho bisogno di [aggiungere un tag HTML prima di ogni elemento della raccolta] (https://stackoverflow.com/questions/47758782/how-do-you-add-a-tag-before-each-radio-button-in-simple-form) e questa soluzione mi è stata di grande aiuto . –

Problemi correlati