【Rails】to_paramでURLをUser.nameにする

URLのidの部分にid以外のものを指定して、github.com/mynameのようにするために、to_paramメソッドがありましたので使ってみたいと思います。

Rails Document
http://railsdoc.com/references/to_param

Scaffoldで準備

Models

to_paramメソッドでuser.nameが入るようにします。バリデーションの設定は実際にはもっと必要かと思いますが割愛しております。

app/models/user.rb

Controllers

find_byでnameを取り出します

app/controllers/users_controller.rb

Routing

この書き方はrailsのDRYに反している気がしますが、routesが被ってないので動作は問題ありません。間違ってたら教えてください。
user.nameを入れたいroutesのpathは’/’だけにします。

config/routes.rb

routesの出力結果はこちらです。

以上で、/users/:idの部分にuser.nameが入るかと思います!

こちらにその他いろいろな書き方が紹介されています。
https://gist.github.com/agnellvj/1209733
friendly_idというgemを使って実装する記事はこちらです。
https://remonote.jp/rails-friendly-id-url

ご覧いただき、ありがとうございました!


投稿者:

Shuji

読書したり、プログラミングしたりしています。何かアウトプットできそうなものがあれば投稿していきたいと思います。