2013-05-20 1 views
0

내 응용 프로그램 캐시 웹 페이지를 URL 내에서 URL을레일 페이지에

을 FriendlyId # 새, 당신은 페이지가 생성되고 당신이 pages/4처럼 쇼에 뭔가를 리디렉션하고합니다 (http:// 접두사없이) URL을 제출할 때 내가 "yahoo.com"를 제공하는 경우 (4) 내가 friendly_id 추가하기 위해 노력하고있어하지만 내 Page 모델

extend FriendlyIdfriendly_id :url를 추가 한 후 문제로 실행하고있는 ID

이고, 리디렉션 페이지/야후로 이동 .com. yahoo.com이 {"id"=>"yahoo", "format"=>"com"}으로 해석하고 내가 "yahoo.com/index.html"를 제공하는 경우 레일이 나에게 Couldn't find Page with id=yahoo

를 알려줍니다, 리디렉션 페이지로 이동/yahoo.com/index.html을하지만 나는 단순히 얻을 No route matches [GET] "/pages/yahoo.com/index.html"

어떻게 해결할 수 있으리라 생각하십니까?

답변

0

레일 경로의 마침표는 형식 (.json, .html, .csv 등)을 나타냅니다. 경로에 마침표가 포함되도록하려면 config/routes.rb 파일에서 경로의 format 옵션을 false로 설정해야합니다.

이 답변은 Disable :.format routes in rails3에서 빌려 왔습니다.

match '*pages' => 'pages#show', :format => false 

또는 (수완) :

friendly_id에 관해서는
constraints :format => // do 
    resources :pages 
end 

, 당신은 Page 모델에 :slug 열을 추가하기 위해 마이그레이션을 실행할 수 있나요?

예를 들어, friendly_id는 :url 열을 가져 와서 친숙한 URL로 만들고 페이지 인스턴스를 올바른 :slug 값으로 업데이트합니다. friendly_id가 마침표를 밑줄로 대체 할 가능성이 있다고 생각하지만이 사실을 확인하지는 못했습니다.

당신이 :slug 열을 사용하지 않고 이미 다음 :url 열이 당신은로 정의해야하는 경우 :

friendly_id :url, use: [:slugged], slug_column: :url 

... 특히, slug_column 인수를.

+0

감사합니다. '/ page/apple-com'이 아닌'/ page/apple.com'과 같이 내 URL을 쓰고 싶기 때문에 아무것도하지 못하도록 내'Page' 모델에서'normalize_friendly_id'를 오버라이드했습니다. 루트의 풍부한 버전을 사용하고 있지만 작동하지 않는 것 같은데, 나는 어떤 이유에서든 'GET' 오류를 다시 얻고있다. –