ユーザー モデルとプロファイル モデルがあります。
user has_one :profile
profile belongs_to :user
この関係があるため、ユーザー ID を呼び出してプロファイルを取得します。したがって、私の URL は次のようになります: website.com/users/[user_id]/profile
私の問題の解決策があるかどうかはわかりません。ここにあります: SEO フレンドリーな URL を表示したいと思います。私はfriendly_id
これに使用することを検討しています。しかし、私たちのプロファイルは企業向けであり、URL に入力したいのは企業名です。問題は、ユーザー モデルが意図的にビジネス名を要求しないことであり、user_id
現在 URL に表示されているのはそれです。
プロファイル モデル (つまり、@profile.name) からビジネス名を取得し、それを使用して URL の [user_id] 部分を設定する方法はありますか?
更新: Friendly_id ジェムをセットアップしましたが、これでうまくいくようです。私のプロファイルモデルには、これがあります:has_friendly_id :name, :use_slug => true
プロファイルを更新したときに、プロファイルfriendly_id
のビジネス名を URL の一部に挿入して、URL をスラッグ化しましたuser_id
。しかし、もちろん、これは例外をスローしました。
したがって、プロファイル モデルのビジネス名が Mike's Bar の場合、URL は /users/mike-s-bar/profile になります。例外には次のように書かれています: でユーザーが見つかりませんでしたID=mike-s-bar.
これが私のプロファイルコントローラーです:
def show
@user = User.find(:all)
@profile = User.find(params[:user_id])
end
これを機能させる方法はありますか?