2009-11-06 13 views
6

Quiero convertir el título de una página en una URL amigable y almacenarlo en la base de datos como un enlace permanente. Mi problema es que no puedo usar el método parameterize. No funciona. Otras inflexiones funcionan como upcase o downcase pero parameterize no funciona. ¿Hay un caso especial para parameterize?¿Cómo se usa parametrizar en Rails?

Este es mi código:

controlador:

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

Modelo:

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

private 
    def makeitpermalink 
    permalink.parameterize! 
    end 
end 
+3

Bienvenido en SO, me alegra ver a los entusiastas de los rieles aquí. La próxima vez intente usar el formato del código y déle a su pregunta un título mejor para obtener respuestas. Acabo de editar tu publicación, pero para que lo sepas. Sobre la pregunta que no sé. ¿Podría proporcionar el mensaje de error o el resultado que está recibiendo? – marcgg

+0

En el modelo, también solo necesita tener la devolución de llamada before_save; before_update es innecesario. – amaseuk

+0

por cierto si tienes "before_save", "before_update" es redundante – choonkeat

Respuesta

9

De acuerdo con la documentación de los rieles, no hay una versión Bang (signo de exclamación) de la parameterize método, intente eliminarlo:

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

Si entiendo lo que está tratando de hacer aquí, esto probablemente tendría que ser: self.permalink = self.permalink.parameterize –

+0

Gracias all.This grandes obras – railslover