Nota: los tipos son pocos y los mete el administrador, por lo que no
habrá problemas de colisión de permalinks; en los mensajes, dejando el
id me ahorro tener que gestionar posibles permalinks repetidos.
… y nos pasan un id inexistente rails devuelve un 404. Pero al
hacer …
posts_controller.rb
def show @post = Post.find_by_permalink(params[:id)
end
… rails devuelve un error 500. Para arreglarlo debes tirar una
excepción cuando no se encuentra el item.
posts_controller.rb
def show
Post.find_by_slug(params[:id]) or raise
ActiveRecord::RecordNotFound
end
Un saludo,
Francesc
On Feb 28, 2008, at 3:00 PM, [dac] wrote:
No se si hay alguna forma mejor de hacerlo, pero así funciona…
/tipos/5-restaurantes
habrá problemas de colisión de permalinks; en los mensajes, dejando el
es muy bueno y es compatible con rest, y no tienes que cambiar la
estructura
de tus finds
una vez que guardas el registro a la base de datos se crea un campo slug
o
como quieras llamarlo formateado para tus permalinks, por ejemplo
defines
que tu el campo title de tu modelo posts sea el referente del permalink,
entonces
class Post < ActiveRecord::Base
sluggable_finder :title
end
lo bueno es que no tienes que cambiar ni un pelo los finds de tus
controllers, puedes seguir utilizando findById y te reconoce el slug,
pruebalo y me cuentas que tal, yo lo uso en todos mis proyectos 100%
recomendable, ademas tiene soporte para las ñ y caracteres latinos
Hola Fernando, no se si esto te sirva, pero tal vez puedes hacer un
‘find_by_name’ en vez de un fin comun y corriente; para manejar los
registros que no existen, en el caso que ingresen un mal nombre, yo uso
esto:
class MiController < ApplicationController
rescue_from(ActiveRecord::RecordNotFound) do |exception|
render :template => ‘shared/record_not_found.html.erb’
end
es muy bueno y es compatible con rest, y no tienes que cambiar la
estructura
de tus finds
una vez que guardas el registro a la base de datos se crea un campo slug
o
como quieras llamarlo formateado para tus permalinks, por ejemplo
defines
que tu el campo title de tu modelo posts sea el referente del permalink,
entonces
class Post < ActiveRecord::Base
sluggable_finder :title
end
lo bueno es que no tienes que cambiar ni un pelo los finds de tus
controllers, puedes seguir utilizando findById y te reconoce el slug,
pruebalo y me cuentas que tal, yo lo uso en todos mis proyectos 100%
recomendable, ademas tiene soporte para las ñ y caracteres latinos