quinta-feira, 7 de março de 2013

Url’s amigáveis em Ruby on Rails com a gem Friendly_id

Nos últimos dias venho me aventurando pelo Framework Rails e tenho gostado muito principalmente pela maturidade do Framework e pela praticidade da linguagem Ruby, bem mas isso é assunto para outro post.
No decorrer do desenvolvimento de um site, senti a necessidade de gerar algumas URL’s amigáveis, por padrão o Rails gera URL’s nesse modelo:http://meusite/posts/1, ou seja, identificando um registro pelo seu Id na URL, vamos concordar que isso não é nem um pouco interessante nem para o usuário final e nem para os motores de busca, eu precisava de um resultado parecido com esse: http://meusite/um-exemplo-de-post, foi ai então que resolvi buscar um solução para isso.
Logo nos primeiros resultados percebi que muitos desenvolvedores tomam o caminho mais fácil para lidar com URL’s amigáveis, eles usam o Id do registro seguido por um hífen e alguma sequencia de caracteres após o hífen geralmente algo como o titulo no caso de uma noticia ou post de blog, obtendo um resultado parecido com esse: http://meusite/posts/1322-um-exemplo-de-post.
Essa forma geralmente é utilizada com o método do Ruby to_i que basicamente converte uma string para um inteiro removendo quaisquer caracteres não numéricos. No controller teríamos algo assim:
#http://meusite/posts/1322-um-exemplo-de-post
  1. Post.find(params[[:id]].to_i)
É uma solução pratica mas na minha opinião a url ainda não está tão amigável assim, veja que ainda existe o Id do post no inicio da url o que a torna difícil de memorizar, e deixa a url com um numero inútil para os motores de busca. Para resolver isso encontrei a gem friendly_id que faz esse trabalho de forma simples:
Em seu gemfile coloque o seguinte código:
  1. gem "friendly_id", "~> 3.1"
Então execute os seguintes comandos:
  1. bundle install
  2. rails g friendly_id
  3. rake db:migrate
Feito isso teremos a gem friendly_id instalada em nosso projeto, o próximo passo é adicionar o seguinte código ao model no qual você quer utilizar url’s amigáveis:
  1. has_friendly_id :title, :use_slug => true
E pronto! Agora é só rodar seu projeto e ver mágica. O friendly_id tem mais algumas configurações que podem ser encontradas na sua documentação no github.

Nenhum comentário:

Postar um comentário