Kinopyo's Blog

I love this game.

アーカイブ

Rails: URLをid+slug”の形にカスタマイズ

2010年07月29日 by kinopyo | Ruby


このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加 Share

slugはurlをより綺麗に表示するためのものです。例えばこの記事のpermanent urlは”rails-id-slug-name-in-url”にしています。英語世界になるんですが、これのようにurlを見ただけでそのurl先の内容が大体わかるようにするのがslugです。

この記事ではRailsで”id + post.title”のような形のURLを作る方法を紹介します。

方法

モデルクラス内にto_paramメソッドをオーバーライドするだけです。

例として

  class Person
    def to_param
      "#{id}-#{name.parameterize}"
    end
  end

  #controller
  @person = Person.find(1)
  # => #<Person id: 1, name: "Donald E. Knuth">

  #view
  <%= link_to(@person.name, person_path(@person)) %>
  # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>

上記のようにmodelクラスを修正するだけで、他の影響はないです。URL: ‘/person/1-kinopyo’と’/person/1′はどっちでも使えます。

parameterizeはRailsのビルトインのメソッドでurlに使う文字列に変換してくれるんです。しかし日本語などは完全にブランクに変換するので要注意です。

もしurlを”/person/kinopyo”のようにperson.nameにカスタムしたい場合はこれより少し複雑になります。興味のある方は下記リンク(英語)を参照してください。 http://augustl.heroku.com/blog/styling-rails-urls.

Tags:

You can leave a response, or trackback from your own site.

関連記事

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes