2013-01-12 4 views
0

Je ne veux pas utiliser la valeur par défautUtilisez la traduction pour le bouton d'envoi

<%= f.submit %> 

et ont créé une fonction d'assistance pour elle, qui intègre également une icône. La fonction d'assistance attend une étiquette à mettre sur le bouton nouvellement créé.

J'appelle comme ceci:

<%= submit_button("icon-plus", I18n.translate("helpers.submit.create")) %> 

Mais maintenant, sur ce texte apparaît sur le bouton:

% {modèle} Toevoegen

Au lieu de:

Type de produit toevoegen

Si j'utilise le bouton d'envoi normal, le texte correct apparaît pour que mes fichiers yml soient corrects. Comment puis-je obtenir le texte correct à utiliser dans l'assistant?

code Helper:

def submit_button(icon, label) 
    link_to "javascript:void(0)", :class => 'btn btn-primary', :onclick => "$(this).closest('form').submit()" do 
    raw('<div class="') + icon + raw(' icon-white"> ') + label +raw('</div>') 
    end 
end 
+0

Pouvez-vous fournir le code d'assistance? Je suppose que vous devez remplacer '% {model}' par '# {model}'. –

+0

Ajout du code d'assistance. J'ai déjà essayé de remplacer le code par # {model} mais cela ne fonctionne pas, et même casse la légende sur les soumissions normales. – rept

Répondre

0

Comme le I18n guide dit, la fonction translate interpole variables passées dans les %{} supports à l'aide de sa deuxième argument (hachage).

Dans votre cas, vous devez lui dire la model en faisant ceci:

I18n.t("helpers.submit.create", model: "Product type") 

Si vous voulez une option générique qui fonctionne pour tous les modèles, vous pouvez voir comment Rails se fait en regardant à la la source on GitHub - c'est quelque chose comme

I18n.t("helpers.submit.create", model: f.object.class.model_name.human) 

En aparté, vous n'avez pas besoin (et ne devrait probablement pas) y utiliser raw. Ce que vous essayez d'atteindre pourrait facilement être fait avec les aides intégrées:

link_to ... do 
    content_tag :div, label, class: "#{icon} icon-white" 
end 
+0

Quelle belle réponse !!! Merci, travailler complètement. Je vais essayer de remplacer la première partie maintenant pour la rendre plus générique. – rept

+0

Pour ce faire: def create_or_update (objet) "helpers.submit". + (objet? (object.persisted??: update:: create):: submit) .to_s fin Maintenant, je peux appeler create_or_update (f.object) et cela fonctionnera aussi pour les mises à jour. – rept

Questions connexes