2011-01-07 2 views
1

내 레일 앱에서 ActiveResource를 사용하여 다른 레일스 앱과 대화합니다 (둘 다 버전 2.3.5). 특정 리소스 객체의 페이지에 링크하고 싶습니다.하지만 그렇게 할 수있는 좋은 방법이없는 것 같습니다. 내가 알아 낸 것 추한 방법은 다음과 같이 내 자원을 흉내 내 routes.rb 파일에 줄을 추가하는 것입니다ActiveResource와 함께 url_for를 사용하는 좋은 방법이 있습니까?

# environment.rb, or in the config/environments/*.rb files 
PERSON_URL = "people.example.com" 

# person.rb 
class Person < ActiveResource::Base 
    self.site = "http://#{PERSON_URL}" 
end 

# routes.rb 
map.resources :people # or persons, or whatever 

# my_view.html.erb 
<%= link_to person.name, person_url(person, :host => PERSON_URL) %> 

을하지만이 꽤 추한입니다. 이제 실제로 존재하지 않는 앱 내 주변에 떠있는 추가 경로가 있습니다. 더 좋은 방법이 있어야합니다. 모델 자체가 자체 URL을 얻기위한 단서를 가지고 있습니까? 아무도 요령있어? 감사.

+0

나는 더 깨끗한 코드를 가질 수 있도록 응용 프로그램 도우미를 만들 것입니다. 즉, improvment 만 볼 수 있습니다. – apneadiving

답변

0

ActiveResource는 이런 식으로 사용되지 않았습니다. 이것은 ActiveRecord에 매우 가깝도록 구현됩니다. 경로는 지역 정의마다 있습니다. 다른 사이트를 참조하는 경우이 응용 프로그램에 더 이상 연결되어 있지 않으므로 일반 경로가 도움이되지 않습니다.

기본 도우미는 이름 지정 규칙 만 사용합니다. 도우미가 객체를 통해 수행 할 수있는 유일한 작업은 to_param을 호출하여 개별 리소스의 식별자를 얻는 것입니다.

나는 당신을 도울 수있는 보석이 있는지 모르겠다. 그러나 나는 당신이 당신의 도우미를 만들어야한다는 것을 두려워한다.

+0

url_for에 대한 설명서 하나가 아닌 경우 ActiveResource에 대한 의도 된 사용에 동의하고 싶습니다. : "해시 대신에 활성 레코드 또는 활성 자원과 같은 레코드를 options 매개 변수로 전달하면 해당 레코드에 대해 명명 된 경로가 트리거됩니다. 조회는 클래스 이름에서 수행됩니다. Workshop 객체가 workshop_path 라우트를 사용하려고 시도합니다 ... "명시 적으로 ActiveResource 객체를 허용하는 경우, 객체를 유용하게 만드는 것이 효과적일까요? – carpeliam

+0

ActiveResource는 ActiveRecord와 마찬가지로 (그리고 Rails 3의 모든 클래스가 ActiveModel :: Naming을 확장 한 이후로) 문서가 말한 것처럼 이름에 기반한 링크를 생성합니다. "클래스 이름에 대한 조회가 발생합니다." 당신은 언제나 원래의 표현보다는 객체에 대한 자신의 표현을 항상 참고하고 있습니다. ActiveRecord를 사용하면 모델 뒤에있는 데이터베이스가 아닌 모델을 참조하게됩니다. ActiveResource도 마찬가지입니다. 게다가 ActiveResource 클래스의 소스가 HTML 표현을 가지고 있는지, 심지어 XML 또는 JSON인지는 확실치 않습니다. – iain

+0

이제 생각해 보겠습니다. 주변을 둘러 볼 방법이있을 수 있습니다. 기본 경로는 'default_url_options'입니다. 이것은 application_controller에서 정의 할 수있는 메소드입니다. 나는 그것이 효과가 있을지 모른다. 그러나 그것을 조사 할 가치가 있을지도 모른다. – iain