2012-01-08 2 views
2

내 응용 프로그램에서 정적 페이지를 만들고 싶습니다! (느낌표). 예를 들어 : 이것은 잘 작동하고, 그러나 정확한 URL을 등을 생성레일을 사용합니다! (느낌표)

# config/routes.rb 
get 'pages(/:action)' => 'pages', :as => :page 

내가 pages을 교체하는 경우 : 현재

/!/about 
/!/faq 

, 나는 그것이 기능 내 routes.rb 파일에 접두사 pages을 사용하여이 !으로, 경로 실패 : 여기

# config/routes.rb 
get '!(/:action)'... 

rake routes의 출력이다 :

pages GET  /!(.:format)    {:controller=>"pages", :action=>"index"} 
page GET  /!/:action(.:format)  {:controller=>"pages"} 

레일스에서 ​​경로를 생성 중입니다. 나는 다른 기호 (같은 @) 예상대로 경로가 작동을 사용하는 경우, 아이러니하게도

No route matches {:controller => "pages", :action => "about"} 

: 내보기에 그 이름이 경로 중 하나를 사용하려고 할 때, 나는 라우팅 오류가 발생합니다. 이유는 무엇 GitHub의에 문제를 제기해야 하는가. 내 경로 :(에서 ! 느낌표를 사용할 수없는 이유는 무엇입니까? 저도 같은 오류와 함께 수동으로 {:controller => :pages, :action => :about}을 경로를 지정하는 경우

PS가도 실패합니다.

PSS 직접 방문 할 경로가 실제로 작동 (/!/about는) 올바른 페이지를 렌더링합니다.의 URL 헬퍼는 실제로 링크 :(

+0

생각 난 대답을했다,하지만 난 같은 문제에 실행으로 간주됩니다. 느낌표를 제거하면 home_path() 메소드가 작동합니다. 그렇지 않으면 그것을 인식하지 못합니다. 다른 사람이 답을 제공하지 않으면 버그를 제기하는 것이 좋습니다. 지금은 문제를 해결하기 위해 최소한 HTML 링크 만 사용하는 것이 좋습니다. – agmcleod

+0

휴. 적어도 나는 미치지 않는다는 것을 안다. 나는 정말로 (헐떡 거리는) HTML 링크 (특히 내가 멋지고 귀여운 HAML을 사용하기 때문에)에 의지하지 않는 것을 선호한다. 지금 당장 나는 대신에'@'기호를 사용하고있다 : /. 나는 2 일을 기다렸다가 현상금을 열고 문제를 제기 할 것이다. 절대 확신하지 않는 한 핵심 팀에 부담을주지 않을 것입니다. – sethvargo

+0

그래, 그거 좋은 생각 인 것 같아. 당신이 할 수있는 또 다른 일은 링크를 사용하고 느낌표를 접두어로 연결하는 것입니다. 훨씬 더 예쁘지는 않지만. – agmcleod

답변

4

RFC3986 Uniform Resource Identifier: Generic Syntax

2.2 Reserved Characters 

    reserved = gen-delims/sub-delims 

    gen-delims = ":"/"/"/"?"/"#"/"["/"]"/"@" 

    sub-delims = "!"/"$"/"&"/"'"/"("/")" 
      /"*"/"+"/","/";"/"=" 

로에서 촬영을 만들 수 없습니다 따라서 경로에 !을 포함하면 안됩니다.

검색 엔진에서 크롤링 할 수있는 ajax 웹 앱을 만들기위한 Google의 #! 구문을 보셨을 수 있습니다.

예 : https://twitter.com/#!/exampleUser

하지만이 경우에는 트릭입니다.

경로 단지 "/", 나머지는 "앵커"또는 "해시"

host = "twitter.com" 
path = "/" 
hash = "#!/exampleUser" 
+0

나는 해시 쾅과 그 사용법을 알고있다. 그러나 Rails는 여전히 내 경로에서 :, +, -, _, ...을 사용합니다. 그것은'! '을 사용하지 않을 것이다. – sethvargo

관련 문제