2009-03-21 4 views
0

저는 RoR에서 최소한의 위키를 디자인하고 있습니다. 기본적으로 프로젝트에는 많은 페이지가 있습니다. 내 라우팅 파일은 다음과 같다 :레일에서의 라우팅

map.root :controller => "projects" 
map.resources :projects, :has_many => :pages 
map.connect ':id', :controller => 'projects', :action => 'show' 
map.connect ':project_id/:id', :controller => 'pages', :action => 'show' 
map.connect ':controller/:action/:id' 
map.connect ':controller/:action/:id.:format' 

이 액세스 날 수 있도록, 예를 들어,이 같은 '교육'프로젝트의 '기본'페이지 : 즉시 그러나

http://localhost:3000/teaching/main 

는,로에게 내가 클릭 링크로 변환하면 다음과 같이 변환됩니다.

원하는 도식에 따라 URL을 만드는 도우미 메서드를 만들려면 어떻게해야합니까? 명명 된 경로를 시도했지만 작동하지 않아서 뭔가 빠져 나가야합니다 ...

답변

0

레일스는 모든 설정에 관한 규칙입니다. Rails가 제공하는 편리함을 원한다면 규칙을 구입해야합니다. 나는 RESTful 모델을 고수하고 현재 레일즈가하고있는 것을 받아 들일 것을 강력히 권장한다.

이렇게 말하면 아마도 함께 해킹 할 수 있습니다. 그것은 예쁘지 않을 것이고 당신이 링크를 만들고 싶을 때마다 고통 스러울 것입니다. map.resources 당신이 원하지 않는 URL에 두 map.connect '이들 중 하나 도움이되지 않습니다 보내는 일이 있기 때문에

는 그래서 일단

map.resources :projects, :has_many => :pages 
map.connect ':controller/:action/:id' 
map.connect ':controller/:action/:id.:format' 

제거. 이제 가지고 있어야합니다.

map.connect ':project_id/:id', :controller => 'pages', :action => 'show' 
map.connect ':id', :controller => 'projects', :action => 'show' 

그런 다음 링크를 만들려면 직접 만들어야합니다. 다음과 같이 사용하려고합니다.

<%= link_to 'Blah', :project_id => @project, :id => @project.pages.first %> 

또는 이와 비슷한 것을 사용하려고합니다. 그 경로가 정확히 어떻게 지정되는지는 모르겠지만 아마도 : project_id 및 : id 기호를 변경해야 할 것입니다.

나는 당신이 할 필요가 없다면이 길을 택하고 싶지 않다고 말했다. 당신의 삶을 훨씬 쉽게 만들어 줄 수 있기 때문에 당신이 할 수있는만큼 많은 컨벤션에 충실하십시오.

1

지도를 연결하면됩니다. 연결 물건 - 매우 RESTful하지 않으며 매우 혼란스러워 할 수 있습니다.

첫눈에 나는 member : and : collection 지시문을 사용하여 원하는 것을 추가 할 수 있다고 생각했지만 더 자세히 보았을 때 도움이되지 않는다는 것을 깨달았습니다.

데이터 모델을 이해하는 데 약간의 어려움이 있습니다. 페이지에 페이지가 여러 개있을 수 있습니까? 아니면 프로젝트 이름을 가르친 다음 페이지가 있습니까?

그런 경우 SubDomainFu와 같은 플러그인을보고 경로 파일을 직접 해킹하지 말고 프로젝트 이름을 기반으로하는 하위 도메인을 사용해야합니다. 우리는 당신이 기술 (도메인은 프로젝트, 약간의 추가 코드가 필요함)과 teaching.yourdomain.com 및 learning.yourdomain.com과 같은 스키마를 제공하는데 성공적으로 사용했습니다. SSL,하지만 그것은 다른 이야기입니다).

+0

'Teaching'은 프로젝트의 이름이고, 예, ID 대신 이름을 기반으로 주소를 지정하려고합니다. SubDomainFu를 살펴 보겠습니다. –