JonSmockのソリューションも機能します。私は次のことを好む傾向があります。
class Hamburger << ActiveRecord::Base
#this normally defaults to id
def to_param
name
end
end
class SomeModelController << ApplicationController
def show
@hamburger = Hamburger.find(params[:id]) #still default code
end
end
#goes in some view
This is the <%= link_to "tastiest hamburger ever", url_for(@hamburger) %>.
これは大まかに言えば、SEOの手法です(美しいURLもユーザーフレンドリーであり、ログインの背後にあるページなど、SEOを気にしない場合でも、絶対にすべての人に推奨します)。Rails SEOについてさらに詳しく説明します。これには、このような他のヒントも含まれています。
重要なヒント:設計時に、変更する必要がある場合に何をするかを検討する必要がparam
あります。たとえば、私のハンバーガーシナリオでは、「SinfullyDeliciousCheeseburger」の名前を「TripleBypass」に変更する可能性があります。それがURLを変更する場合、私のWebサイトへの顧客リンクの破損など、いくつかの考えられる影響があります。したがって、本番環境で使用する場合、通常、これらのモデルに不変のpermalink
属性を指定します。この属性は、人間が意味するように初期化して1回だけ実行します。オブジェクトが後で変更された場合でも、URLは同じままです。(他にも解決策があります-それが最も簡単な解決策です。)