2010-10-06 64 views
0

J'ai créé un menu déroulant dans mon formulaire à l'aide select_tag:Comment afficher du texte au lieu de l'ID pour la valeur sélectionnée dans show.html dans Ruby on Rails?

<%= select_tag(:warning, options_for_select([['None', 1], ['Medium', 2], ['High', 3]], 1)) %> 

Maintenant, je veux afficher le texte correspondant à la valeur qu'ils choisissent plutôt que l'id dans mon show.html.erb, il affiche ' Aucun 'au lieu de 1. Je suis nouveau à cela et ne peux pas tout à fait le comprendre. En ce moment, je suis juste en utilisant le code d'échafaudage par défaut et affiche l'ID:

<%= @standing.warning %> 

... Merci

Répondre

1

Avez-vous essayé inverser les options afin que ['None', 1] devient [1, 'None']?

Mettez à jour votre modèle permanent:

class Standing 
    @@warning_labels = { 1 => 'None', 2 => 'Medium', 3 => 'High' } 

    def warning_str 
    @@warning_labels[@warning] 
    end 
end 

En show.rb:

<%= @standing.warning_str %> 

OU

Dans votre standing_helpers.rb:

def warning_str(warning_id) 
    warning_labels = { 1 => 'None', 2 => 'Medium', 3 => 'High' } 
    warning_labels[warning_id]; 
end 

Dans show.rb:

<%= warning_str(@standing.warning) %> 
+0

La forme fonctionne très bien. Ce que j'essaie de faire est de faire en sorte que les index.html.erb et show.html.erb affichent le texte au lieu du nombre, et je ne suis même pas sûr de savoir par où commencer. Les recherches ne sont pas très nombreuses. – Rob

+0

@Rob Désolé, mal lu que votre '' où l'affichage des numéros au lieu des noms – meagar

+0

Oh pas de problème. Je déteste quand quelque chose de si simple semble si difficile quand vous apprenez d'abord :) – Rob