Rails初心者からの別の質問。Rails 3.xのmysqlで Friendly_id gemを使用しています
これは設計上の問題です (レールでは簡単かもしれません)。Railsの専門家からのアドバイスを期待しています。私は図書館リストアプリを構築しています。ユーザーがライブラリを「大都市圏」または「都市」別に表示できる場所。例えば:
次のような URL が必要です。
www.list.com/library/san-francisco-bay-area
また
www.list.com/library/san-francisco-bay-area/palo-alto/
データベースにはテーブルがあります:
library
-------
id, name, city_id, slug
name はここにスラッグされ、city_id は FK です
city
----
city_id, name, metro_area_id, slug
名前はここにスラッグされ、metro_area_id は FK です
metro_area
----------
metro_area_id, name, state, slug
名前はここにスラッグされます
したがって、ユーザーがブラウザで www.list.com/library/san-francisco-bay-area/palo-alto を参照すると、
san-francisco-bay-area/palo-alto にある図書館の一覧を取得したいと考えています。しかし、私のライブラリ テーブル モデルには、ライブラリの名前のみのスラッグが含まれています。この URL を解析して、ライブラリ モデルとコントローラで使用できる city_id を見つけ、リストを取得する方法を説明します。
覚えておいてください、私は都市の名前だけに頼ることはできません. メトロ「サンフランシスコベイエリア」にある「パロアルト」のcity_idを見つける必要があります。metro_area と city のスラッグは他のテーブルにあるため、モデルとコントローラーを設計する最良の方法は何ですか?
コントローラーの表示方法は次のとおりです。
def show
@user = Library.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @library }
end
end
モデルは
class Library < ActiveRecord::Base
attr_accessible :name, :city_id, :slug
extend FriendlyId
friendly_id :name, use: :slugged
end
これは、フレンドリ URL の要件では機能しません。ですから、専門家からのアドバイスをいただければ幸いです:)