2017-10-06 1 views
-1

J'ai un attribut dans mon modèle d'articles appelé 'title'.Comment enregistrer et afficher la valeur sélectionnée dans une liste déroulante?

je peux mettre le ci-dessous sous une forme pour mon new.html.erb:

<p> 
    <%= form.label :title %><br> 
    <%= form.text_field :title %> 
</p> 

Cela génère une boîte d'entrée pour l'utilisateur de taper un titre. Dans mon show.html.erb je peux afficher le titre avec:

<p> 
    <strong>Title:</strong> 
    <%= @article.title %> 
</p> 

sont-listes déroulantes pas la même chose? j'ai commencé en ajoutant un attribut à mes articles modèle et la migration il:

rails generate migration add_dropdown_attribute_to_articles programlang:string 

je peux placer dans la ma forme new.html.erb:

<p> 
    <%= form.select :programlang, [['Ruby','ruby'],['Python','python']]%> 
</p> 

Je veux sauver l'un des deux options que l'utilisateur choisit et l'afficher dans show.html.erb:

<p> 
    <strong>Language:</strong> 
    <%= @article.programlang %> 
</p> 

Je pensais que ce serait afficher soit « Ruby » ou « Python », comme le choix des utilisateurs, mais cela ne fonctionne pas. Il n'y a aucune erreur mais aucune valeur n'est affichée dans le show.html.erb

Je me demandais simplement si je devais réellement faire quelque chose de plus pour que cela fonctionne. Je me suis dit que si je pouvais obtenir l'entrée de l'utilisateur à partir d'une boîte et l'afficher, je pourrais faire la même chose avec une liste déroulante.

J'ai essayé de trouver un guide qui explique cela, mais ils veulent tous faire des actions plus compliquées avec les valeurs dans la liste déroulante. J'essaie de le garder aussi simple que possible. Ai-je besoin d'ajouter 'Python' et 'Ruby' à une graine?

Répondre

1

Essayez ceci,

<%= form.select :programlang, options_for_select([['Ruby', 'ruby'], ['Python', 'python']], (@article.programlang)), { include_blank: 'None'}, class: "" %> 

Dans contrôleur

def article_params 
    params.require(:article).permit(:title, :text, :description, :keyword, :syntax, :programlang) 
end 
+0

Je joue avec. J'obtiens actuellement: app/views/articles/new.html.erb: 42: erreur de syntaxe, inattendue ',', attendez &. ou :: ou '[' ou '.' –

+0

': programlang' à partir de': programlang' – Nithin

+0

Je ne reçois pas une erreur, mais il fait la même chose que précédemment et ne s'affiche pas sur mon show.html.erb –

0

Je pense que c'est la base et il travaillerai

<%= form.select :programlang, options_for_select([['Ruby','ruby'],['Python','python']]) %> 

Ou pour l'option sélectionnée

<%= form.select :programlang, options_for_select(['Ruby','Python'], 'Ruby') %>