2013-05-15 2 views
3

나는 런타임에 다른 URL의 매핑을 만드는 작업이 있습니다.
응용 프로그램에서 routes.rb 파일의 경로 목록을 표시하는 GUI 인터페이스가 있습니다.
사용자는 해당 URL을 인터페이스 (예 :
)와 다른 이름으로 변경할 수 있습니다. (abc/mno) - 사용자가 - (hello)
으로 변경할 수 있습니다. 브라우저 요청의/hello 사용자 유형이/abc/mno로 리디렉션 된 경우
이 매핑 된 경로를 데이터베이스에 저장해야합니다.
routes.rb 파일을로드하는 동안 데이터베이스에서 경로를 추가하는 방법. 데이터베이스에 새 레코드를 만드는 동안 이미 정의 된 경로 (routes.rb)에 동적으로 매핑 된 경로를 추가하는 방법. 내가 그것을 데이터베이스에서 경로를 포함 할 수 있도록 기본 라우터를 확장하는 방법을 알아낼 수 없습니다입니다
..rails3에서 동적 경로와 도우미를 만드는 방법

답변

1

난 당신을위한 완벽한 솔루션이없는,하지만 당신은 두 가지 방법으로 시작할 수 있습니다

+0

모든 라우팅을 처리하는 컨트롤러를 만드는 문제는 .. 사용자가 gui에서 매핑을 생성 할 때 매핑이 반영 될 때까지 다시 시작하지 않습니다. 서버를 다시 .. 다른 path_helpers도 사용할 수 없습니다 – sanjee

+0

@ BlueSmith BlueSmith에 의해 게시 된 두 번째 링크는 꽤 많이 죽었습니다. 표시된 예는 좋은 시작점이며, 변경 사항은 원하는대로 수행해야합니다. – RadBrad

1

, 당신은 제약 조건을 사용할 수 있습니다. 다행히도 동적 경로의 범위는 "/ abc/동적 인 내용이 될 수 있습니다."과 같은 의미로 사용됩니다.

그래서, 사용자의 이름을 기반으로하는 동적 경로라면 다음을 수행합니다.

#config/routes.rb 
match '/abc/:route' => "abc#dynamicroute", :contraints => DynamicRouteConstraint.new 

#lib/dynamic_route_constraint.rb 
class DynamicRouteConstraint < Struct.new 
    def matches?(request) 
    User.find_by_first_name(request.params[:route]).present? 
    end 
end 

#app/controllers/abc_controller.rb 
class AbcController < ApplicationController 
    def dynamicroute 
    @user = User.find_by_first_name(params[:route]) 
    #render or redirect, however you wish 
    end 
end 
+0

새 개체를 인스턴스화 할 필요가 없으며 클래스 메서드를 호출 할 수 있습니다. 내 대답을 +1하면 내 자신의 솔루션을 구현하는 데 영감을 받았습니다! – Cyzanfar