2009-11-06 9 views
6

Je souhaite convertir le titre d'une page en URL conviviale et le stocker dans la base de données en tant que permalien. Mon problème est que je ne peux pas utiliser la méthode parameterize. Ça ne fonctionne pas. D'autres inflexions fonctionnent comme upcase ou downcase mais parameterize ne fonctionne pas. Y a-t-il un cas particulier pour parameterize?Comment utiliser paramétrer dans Rails?

Ceci est mon code:

Controller:

def create 
params[:page][:permalink] = params[:page][:title].dup 
@page = Page.new(params[:page]) 
end 

Modèle:

class Page < ActiveRecord::Base 
before_save :makeitpermalink 
before_update :makeitpermalink 

private 
    def makeitpermalink 
    permalink.parameterize! 
    end 
end 
+3

Bienvenue sur SO, heureux de voir les amateurs de rails ici. La prochaine fois, essayez d'utiliser le formatage de code et donnez un meilleur titre à votre question pour obtenir des réponses. Je viens d'éditer votre message, mais juste pour que vous sachiez. A propos de la question je ne sais pas. Pourriez-vous fournir le message d'erreur ou le résultat que vous obtenez? – marcgg

+0

Dans le modèle, vous devez également avoir le callback before_save; before_update est inutile. – amaseuk

+0

btw si vous avez "before_save", "before_update" est redondant – choonkeat

Répondre

9

Selon la version de la documentation Rails, il n'y a pas bang (point d'exclamation) de la parameterize méthode, alors essayez de le supprimer:

def make_it_permalink 
    self.permalink = self.permalink.parameterize 
end 
+1

Si je comprends ce qu'il essaie de faire ici, cela devrait probablement être: self.permalink = self.permalink.parameterize –

+0

Merci à tous.Ceci fonctionne très bien – railslover

Questions connexes