2011-01-18 8 views
1

** 업데이트 : 사실 꽤 좋은 이유가 있습니다. 사용자에게 링크를 보내는 알림 클래스가 있습니다. 그래서 프런트 엔드와 동일한 라우팅 이유 때문에 URL 정보가 필요합니다.)모델에서 "경로"정보 받기

모델에있을 때 "경로"경로를 얻으려면 어떻게해야합니까?

users_path(xxx) 
app.users_path(xxx) 

이 모두

+0

더 나은 질문은 무엇이라고 생각합니까? – sevenseacat

답변

2

나는 대부분의 경우이를 피해야하고 종종 더 좋은 방법이 있다는 데 동의하지만, 이 결코이 아닐 것이라고 말하기는 매우 간단합니다. 실제로 이것이 완벽하게 받아 들일 수있는 상황이 많이 있습니다 (예 : 사이트의 개체 페이지에 대한 링크가 필요한 CSV 보고서 생성).

어떤 경우이든 레일스는 이것을 매우 쉽게 만듭니다. 먼저해야 할 일이 적절한 것인지 생각해 봤는지 확인하십시오! 수업에 Rails URL 도우미를 포함 시키십시오.

include Rails.application.routes.url_helpers 
+1

컨트롤러/뷰와 관련된 액션을 csv로 생성하지 않을 것입니다. xml과 비슷하지만 모델 메소드에있을 필요는 없습니다. –

+0

필수 사항은 아닙니다. 그것은 당신이 그것을 사용하는 것에 달려 있습니다. 때로는 모델이나 완전히 다른 클래스에서 사물을 생성하는 것이 더 적절합니다. 한 무리의 사람들에게 매일 이메일로 전송되는 csv 파일을 생성하고 싶다고 가정 해 봅시다. 생성하는 가장 좋은 방법은보기를 작성하고보기를 호출하여 첨부 할 수 있도록 파일에 저장하는 것입니다. 그것? Rails가 액션 컨트롤러 외부에있는 URL 헬퍼를 쉽게 포함 할 수있게하는 이유입니다. – idlefingers

+0

나는 당신이 말하는 것을 부정하지 않습니다. 나는 모델에서 그렇게하는 것이 일반적으로 매우 나쁜 생각이라고 말하고있다. 기본적으로 뷰어 도우미를 사용하여 이러한 문제의 대부분을 보았던 MVC의 전체 개념에 대해 일종의 꽁꽁 엉켜 버립니다. 이 경우, 우리는 그것이 이루어져야한다고 말하기에 충분한 정보가 없기 때문에 .. :) –

3

나쁜 생각 그게 전부 실패, 당신은에이 모델의 내부 라우팅 정보를 필요가 없어야합니다.

분명히 잘못된 것이 있습니다. 모델 내부의 물건 대신 헬퍼를 사용해보십시오.

또는 문제에 대한 자세한 정보를 제공 할 수 있으며 확실한 대답을 드릴 수 있습니다.

업데이트 - 사용자에게 전자 메일을 보내고 있다고 가정하면 모델에서 수행하는 대신 메일러보기에서 URL 도우미를 직접 사용할 수 있습니다. user_path (xxx) 대신 user_url (xxx)을 사용하십시오. 이를 위해 action_mailer.default_url_options [: host]를 설정해야 할 수도 있습니다.

+0

이유가 =)로 업데이트 –

+0

대답을 –

+0

업데이트하지, 나는 조랑말을 사용하고 있습니다. 그래서 나는 idlefinger의 제안을 고수 할 것입니다. –