2009-07-22 2 views
10

몇 가지 기본 자습서로 RoR 기술을 개발할 때 문제가 발생했습니다. 내가 달성하고자하는 것은 별도의 색인 또는 개별보기가없는 게시물에 속한 의견을 갖는 것입니다. 이 부분은 쉽습니다.레일 라우팅 및 URI 조각 식별자

여기에 힘든 하나가 있습니다. post_comment_urlfragment identifier : http://example.com/posts/2#comment-4으로 주소를 반환하고 싶습니다. 그것은 redirect_to:anchor 매개 변수 (이것은 단순한 유지의 루비 방법)와는 상관없이 가장 간단한 형태로 사용할 수 있습니다.

어떻게 수행하나요?

답변

12

대신 레일 '기본 동작을 변경, 아마 도우미 메서드에서 사용자의 요구를 마무리하기 위해 더 나은 것 :

# in app/controllers/application_controller.rb 
class ApplicationController 
    helper :comment_link 

    def comment_link(comment) 
    post_comment_url(comment.post, comment, :anchor => "comment-#{comment.id}") 
    end 
end 

helper를 호출하면 같은보기에 그 방법에 액세스 할 수 있습니다 귀하의 컨트롤러로 잘.

+0

아마도 이것은 좋은 해결책이지만 네이티브 post_comment_url 메서드를 사용하는 규칙을 깨뜨리기 때문에이 래퍼 아이디어가 마음에 들지 않습니다. 나는 또한 post_comment_path에 다른 도우미가 필요할 것이라고 언급했다. 그것이 작동하는 해결책이기 때문에, 나는 그것이 충분히 건조하다고 생각하지 않는다. – samuil

+0

post_comment_url에 대한 Rails 규칙을 주석 앵커와 함께 반환함으로써 Python의 Rails 규칙을 무시하면 : anchor 옵션을 매번 전달해야하는 것보다 더 큰 두통을 낳는 경향이 있습니다 (실제로 더 나은 방법이라고 할 수 있습니다. .) 나는 DRY를 거의 모든 일을하는 이유로 사용하지 말 것을 경고합니다. DRY라는 용어는 Agile이라는 단어와 비슷합니다. 그것은 원칙과 관행을 모아 놓은 것으로, 그 자체만으로는 아무 것도 의미하지 않습니다. – nakajima

+2

DRY는 수수께끼 같은 원리 모음이 아닙니다. 단지 모든 정보가 코드에 한 번만 나타나야한다는 것을 의미합니다. 도우미보다 더 좋은 해결책이 없다면 (필자는 아직 레일스에 익숙하지 않기 때문에 일부 기본 메소드를 변경하여 솔루션을 구현하고 영리하다고 생각하면 전혀 알 수 없다) 미래의 레일즈 버전. – samuil