2014-09-25 4 views
0

코드가 입력을 잘못 해석하고 있기 때문에 Friendly_ID를 설치 한 후 레일에서 오류가 발생하며 문제를 해결하는 방법을 모르겠습니다. 위Friendly_ID gem이 기본 키 대신 슬러그를 사용하는 이유는 무엇입니까?

localhost:3000/posts/[:id] 

이는 [id]이 포스트 모델 클래스에있는 모든 개체에 대한 기본 키를 나타내는 다음 MVC의 URL을 이해하는 프레임 워크와 경로에 대한 위해서는 그에 따라, URL은 다음과 같은 패턴에 맞게해야합니다.

localhost:3000/posts/[:slug] 

업데이트 된 URL는 사용자가 읽을 분명히 쉽게,하지만 내 응용 프로그램이 [:id]을 얻을 것으로 기대하고 있기 때문에, 그것은 다음과 같은 예외가 발생 : Friendly_ID은 다음 패턴에 맞게 URL을 변경할 때 잘못 해석은 발효 ": 3000/게시물/테스트 localhost"를 다음 URL에 대한

Rails exception screenshot


은 내가 Friendly_ID 보석, 내부적으로 라우팅 문제를 돌봐 일부 친척을 수행하는 것 중 하나라고 가정했다 d를 [:id]으로 조회하거나 URL 마스킹을 통해 마법을 작동 시키십시오. 위의 어느 것도 사실이 아니기 때문에이 문제를 어떻게 해결하여 예쁜 URL이 원래의 URL 패턴과 동일한 결과를 제공하도록 허용합니까?

답변

1

찾기 최우선 여기에 내 보이는 무엇 project github page

+0

잘 작동합니다. 레일이 URL 패턴을 받아 들일 수 있도록하는 직관적 인 방법이 있습니까? – elersong

+0

@elersong 당신은 그 일을 할 수 있습니다 - friendly_id : foo, use : [: slugged, : finders] 프로젝트의 github 페이지를 참조하십시오 – urmurmur

+0

github 페이지는 코드가 있어야하는 곳을 언급하지 않습니다. 나는 그것을 어디에 두어야 하는가? – elersong

0

config/initializers/friendly_id.rb

config.use :finders 추가를 참조하십시오, 보석 버전 5.0

사용 Post.friendly.find(params[:id])하거나 다운 그레이드 또는 사용 측정기 부가 기능 때문에 사용되지 않습니다 같은 :

FriendlyId.defaults do |config| 
    config.use :reserved 

    config.reserved_words = %w(new edit index session login logout users admin 
    stylesheets assets javascripts images) 

    config.use :finders 
end 
+0

방금 ​​initializer 디렉토리를 확인했는데 그 파일이 없습니다. 그럴까요? – elersong

+0

기본 설정을 설정합니다. 한 클래스에만 친숙한 id를 사용하면 필요하지 않습니다. 그러나 여러 클래스에 사용하는 경우 한 곳에서 구성을 유지하는 것이 좋습니다. – makhan