development > Ruby On Rails > friendly_idでRailsアプリのURLをかわいくする
Ruby On Rails

friendly_idでRailsアプリのURLをかわいくする

Large?1464654909

RailsアプリでのURLは、そのままだとhttp://example.com/articles/1という様なidが割り振られた無機質なものになると思います。これだと、

  • かわいくない
  • ユーザーが数字をイジって他のページが見たくなる(?)

といった事があるかと思います。このURLをhttp://example.com/articles/super-awesome-articleの様に文字列に置き換えて分かりやすくしたものをPretty URLを呼ぶそうです。

それを実現してくれるのが

という定番gemです。

インストールする

まずGemfileに

gem 'friendly_id'

を追加してbundle instalします。次に

$ bundle exec rails g friendly_id

を実行すると、firendly_id用のmigrationファイルが作成されるので、bundle exec rake db:migrateしましょう。

ModelをPretty URL対応する

friendly_idはpretty urlの管理にデフォルトではslugというカラムを使います。なので、slugを持ったmodel(ここではUser)を作って試してみましょう。

$ bundle exec rails g scaffold user name:string slug:string:uniq

これもbundle exec rake db:miragteしておきます。次に、作成されたmodelに

extend FriendlyId
friendly_id :name, use: :slugged

と追記します。これはデフォルト設定ですが、例えば

extend FriendlyId
friendly_id :name, use: [:slugged, :history]

のようにすると、slugの変更履歴が保存されるのでurlが変わった時の404エラーを回避できます。

あとはnameを持ったユーザーを保存すると、自動的にslugが振られます。例えば

User.create(name: "Francesco Totti")

の場合、slugはfrancesco-tottiとなっているかと思います。

Small?1464654909

この記事が気に入ったらいいね!して
9bar の最新記事を受け取りましょう

Thumb?1464654909

9bar の最新記事をお届けします!

新着記事