2016-12-20 1 views
0

J'utilise friendly_id pour générer des URL sensibles pour une chaîne de salons de coiffure.Attribut manquant: slug, lors de l'utilisation de friendly_id dans Rails

Cependant, je reçois cette erreur sur la page d'accueil, où j'ai des liens vers quelques-uns des salons:

ActiveModel::MissingAttributeError in Pages#home 

missing attribute: slug 

La ligne incriminée est celle-ci, en home.html.haml:

= link_to salon, data: { no_turbolink: true } do 

Ceci est le fichier entier:

- content_for :header do 
    .header-text 
    %h1 Book your treatment online here 
    .sub-header 
     Choose a treatment from our superior quality selection 
    %searchtreatment 

.container-fluid.stripe-1 
    .container.m-t-1 
    .row 
     .col-xs-12.m-t-3.m-b-1.text-center 
     %h2.main-header Treatments 

     .row.padding-md-up 
     - @treatments.each do |treatment| 
      .col-md-4.m-b-2 
      %a(href="/search#?area=New England&main_category=#{treatment.gsub('&', '%26')}" data-no-turbolink='true') 
       .displaybox 
       = image_or_placeholder("treatments/#{treatment}.jpg") 
       .title 
        = treatment 

.container 
    %hr 

.container-fluid.stripe-2 
    .container.m-t-1 
    .row 
     .col-xs-12.m-t-3.m-b-1.text-center 
     %h2.main-header Most popular salons 
     .row.padding-md-up 
     - @salons.each do |salon| 
      .col-md-4.m-b-3 
      = link_to salon, data: { no_turbolink: true } do 
       .displaybox 
       = image_tag salon.picture 
       .title 
        = salon.name 
     %br 
     %br 
     %br 
     %br 

Il n'y a que trois salons dans ma base de données de test, et ils ont tous limace s quand je les regarde dans la console. J'ai essayé de placer leurs limaces à nil afin de régénérer les limaces, mais aucun résultat.

J'ai mis en place friendly_id normalement, en ajoutant ces deux lignes salon.rb:

extend FriendlyId 
    friendly_id :slug_candidates, use: :slugged 

Dois-je obtenir friendly_id pour générer la limace plus tôt d'une certaine façon?

J'ai essayé des variantes de la ligne fautive; par exemple:

= link_to 'salon', salon_path(salon.to_param), data: { no_turbolink: true } do 

et:

= link_to 'salon', salon_path(salon), data: { no_turbolink: true } do 
+0

Après avoir ajouté le slug à 'Salon', avez-vous exécuté' Salon.find_each (&: save) 'sur les rails c? –

Répondre

0

Il est avéré que la bonne syntaxe est:

= link_to salon_path(salon), data: { no_turbolink: true } do 

qui est agaçant proche de ce que j'avais.