레일즈 뉴비의 또 다른 질문. 레일즈 3.x에서 mysql과 함께 friendly_id gem을 사용하고 있습니다.친절한 URL을위한 레일의 모델 및 컨트롤러 디자인
이것은 레일에서 쉽게 발생할 수있는 디자인 문제입니다. 레일 전문가의 조언을 기대합니다. 도서관 목록 앱을 만들고 있습니다. 사용자가 "대도시"또는 "도시"로 라이브러리를 볼 수있는 위치. 예를 들어 :
www.list.com/library/san-francisco-bay-area
또는
www.list.com/library/ :
내가 좋아하는 URL이하고자하는 샌프란시스코의 베이 지역/팔로 알토/데이터베이스에서
나는 테이블이 있습니다
library
-------
id, name, city_id, slug
없음을 나 여기에 장타율하고 CITY_ID는
city
----
city_id, name, metro_area_id, slug
이름이 여기에 장타율과 metro_area_id 이름이 여기
장타율있다metro_area
----------
metro_area_id, name, state, slug
FK
이다 FK이다 그래서 때 www.list.com에 대한 사용자 점 브라우저/library/san-francisco-bay-area/palo-altosan-francisco-bay-area/palo-alto에있는 도서관 목록을보고 싶습니다. 하지만 내 라이브러리 테이블 모델에는 라이브러리 이름에만 슬러그가 포함되어 있습니다. 따라서이 URL을 구문 분석하여 라이브러리 모델과 컨트롤러에서 목록을 가져올 수있는 city_id를 찾는 방법.
도시 이름에만 의존 할 수는 없습니다. 나는 이 메트로 'san-francisco-bay-area'에있는 'palo-alto'의 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
및 모델 내 친화적 인 URL 요구 사항에 따라 작동하지 않습니다
class Library < ActiveRecord::Base
attr_accessible :name, :city_id, :slug
extend FriendlyId
friendly_id :name, use: :slugged
end
이있다. 따라서 전문가의 조언을 부탁드립니다.