2013-10-23 3 views
0

안녕하세요 저는 레일스에서 ​​매우 새롭습니다. 나는이 컨트롤러를 static_pages라고 불렀는데, 여기에는 여러 가지 뷰 (호텔, 카페, 박물관)가있다. 저는 현재 routes.rb 내가 "정적 페이지 컨트롤러에 특정 URL에보기 이름을 결합하면"어떻게받을 수 있나요 어떻게레일 - 컨트롤러의 모든 뷰를 루트에 바인딩하는 방법

match '/school', to: 'static_pages#school', via: 'get' 
match '/hotel', to: 'static_pages#hotel', via: 'get' 
match '/museum', to: 'static_pages#museum', via: 'get' 
match '/peace', to: 'static_pages#peace', via: 'get' 
match '/cafe', to: 'static_pages#cafe',   via: 'get' 
match '/investor', to: 'static_pages#investor',   via: 'get' 

이하고 있어요. 이 6 줄을 제거하고 컨트롤러의 각 방법에 대해 경로를 생성한다는 것을 알려주는 한 줄로 바꾸십시오.

여기에 할 특별한 트릭이 있습니까? 당신이 그것을 단축하려는 경우

['school', 'hotel', 'museum', etc].each do |route| 
    match route, to: "static_pages##{route}", via: 'get' 
end 

비슷한 뭔가를 할 수 있도록

답변

0

routes.rb는 일반 루비 파일입니다.

편집 :

대신 하드 코딩의 모든 방법을 얻고 싶은 경우에, 당신이 할 수 있습니다 : 나는 마음에 가독성을 생각되었지만

(ControllerName.methods - ActiveRecord::Base.methods).each do |route_sym| 
    match route_sym.to_s, to: "static_pages##{route_sym.to_s}", via: 'get' 
end 
+0

그것은 괜찮습니다. 아마 정상적인 방법을 고수 할 것이지만, 두 번째 해결책을 배우는 것은 좋았습니다. –

관련 문제