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: rails
You can leave a response, or trackback from your own site.