2017-04-24 12 views
0

내 응용 프로그램에서 Reails가있는 레일을 사용하고 있는데 메서드에서 Post 모델의 URL을 전달하고 싶습니다. 그것은 내가 localeid (또는 self.id)를 통과 SO에 발견이 방법을 제대로 일하고있다 :Friendly_ID url in model

Rails.application.routes.url_helpers.post_path(locale, id) 

지금 내 프로젝트에 FriendlyID 보석을 포함하고 난 사용하여 내 게시물 페이지로 이동 할 수 있습니다 생성 된 slug이지만 위의 메서드는 여전히 ID가있는 이전 URL을 반환합니다. 내 질문은 - 어떻게 바꿀 수 있습니까?

추신 : (아래 코드를 참조하십시오.) 더 쉬운 방법이 있는지 궁금한가요?

...posts_path(locale) + "/#{slug}" 
+0

'.to_json' 메소드로 원숭이를하는 대신 [ActiveModel :: Serializers] (https://github.com/rails-api/active_model_serializers) 또는 jbuilder를 사용하십시오. 나는 모델이 현재 로케일이나 관련된 어떤 요청을 인식하지 않아야한다고 주장 할 것이다. – max

답변

4

올바른 방법 (및 Rails이 그것을 할 수 있도록 설계 된 방법은)

Rails.application.routes.url_helpers.post_path(locale, to_param) 

기본적으로 to_param 방법은 문자열로 :id을 반환하지만 슬러그를 사용하는 사람들에 의해 무시된다 직접 또는 friendlyID와 같은 젬을 통해

+0

와우, 좋아! 고마워요! – Ancinek