2017-10-11 5 views
-1

Je suis en train de créer un menu déroulant qui affiche les catégories dans Ruby on Rails et souhaite afficher la liste déroulante par ordre alphabétique (A ... Z).Affichage des catégories par ordre croissant

Question: « Puis-je commander le menu déroulant par ordre alphabétique par la modification des méthodes dans le contrôleur ou vues »

Puisqu'ils ne sont pas ensemencés par ordre alphabétique dans la base de données, je me demandais s'il y avait un moyen de disposer de données des données d'affichage qui ressemble actuellement à ceci par défaut:

| DROPDOWN |
| _Cuisine ____ |
| _Zoologie ____ |
| _Histoire _____ |
| _Jardinage__ |
| _Archérie ____ |

dans:

| DROPDOWN |
| _Archérie ____ |
| _Cuisine ____ |
| _Jardinage__ |
| _Histoire _____ |
| _Zoologie ____ |

Actuellement, Catégories a des valeurs id, name, created_at et updated_at.

Voici un extrait de la relation ActiveRecord de la base de données:

ActiveRecord :: Relation
Catégorie id: 1, nom: "Technologie", created_at: "10/10/2017 21:48:59", updated_at: "2017-10-10 21:48:59"
Identifiant de catégorie: 2, nom: "Horror/Mystery", created_at: "2017-10-10 21:50:38", updated_at: "2017-10 -11 00:06:38 "
Identifiant de catégorie: 3, nom:" Fantasy ", created_at:" 2017-10-10 21:50:43 ", updated_at:" 2017-10-10 21:50:43 "
Identifiant de catégorie: 4, nom: "Historical Fiction", created_at: "2017-10-10 21:50:51", updated_at: "2017-10-10 21:50:51"

Si cela ne suffit pas, je peux fournir les fichiers appropriés pour aider à éclaircir le problème.

Merci d'avoir pris le temps de me donner un coup de main!

Répondre

0

oui vous pouvez, voici l'échantillon (vous envisagez d'utiliser form_for avec f comme variable de formulaire)

<%= f.select :category_id, Category.uniq.pluck(:name, :id).sort, { include_blank: true }, { class: 'your class name' } %> 
0

Si votre catégorie est associée à une ressource et que vous essayez d'afficher toutes les catégories sous une forme qui doit être sauvé. Je suppose que vous avez une ressource comme des articles et veut ajouter une catégorie à l'article tout en économisant dans la base de données.

def new 
    @article = Article.new 
    @temp = Category.alphabetically 
    @categories = @temp.all.map{|c| [ c.name, c.id ] } 
    end 

dans votre catégorie modèle catégories

.rb

class Category < ApplicationRecord 
    scope :alphabetically, -> { order(name: :asc) } 
end 

Dans la vue

_form.html.erb

<%= select_tag(:category_id, options_for_select(@categories), class: "form-control", :prompt => "Select one!") %> 

S'il vous plaît laissez-moi savoir si vous avez des questions.

0

Vous pouvez appeler toutes les catégories en ordre croissant en fonction de votre nom d'attribut

@categories = categories.All (: order => "Nom ASC")

ici "nom Asc" nom fait référence à la catégorie Essayez cette console en rails .. Vous pouvez voir cette commande