나는 레일 응용 프로그램을 만드는 중이라서, 나는 수 사용이보기에 전달되는 모델 객체는 다음과 같이,이 객체에 어떤 행동의 URL을 얻을 수 있도록하고 싶습니다 :모델을 레일스에서 컨트롤러를 인식하도록 만드는 방법은 무엇입니까? 예를 들어,
link_to object.public_send(attribute),
{ :controller => object.controller_path,
:action => :show,
:id => object.id }
어떤 것 이것을하는 좋은 방법이 될까요? Draper과 같은 데코레이터로 할 수 있습니까? 온라인으로 몇 가지 예가 있습니까?
업데이트. 나는 이것에 대해 생각해 보았고 데코레이터가 컨트롤러 정보를 유지하기에 좋은 장소가 아니라고 결정했다. 장식 자의 책임이 아닙니다. 데코레이터는 형식이 지정된 데이터를 마크 업으로 렌더링하는 방법 만 알고 있어야합니다. 지금은 Accessor
이라는 모듈을 만들었습니다. 여기서 컨트롤러와 라우팅 인식 모델을 혼합하려고합니다. 나는 더 좋은 방법이 있는지 아직도 궁금합니다.
필요한 이유를 명확히 할 수 있습니까? 어쩌면 당신이 [url_for] (http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-url_for)로 할 수있는 것입니까? –
고마워, 이건 내가 원하는 것에 가깝지만 이미 시도해 봤어. 'url_for '의 가장 큰 문제점은 알고있는''polymorphic_url'] (https://github.com/rails/rails/blob/537ede912895d421b24acfcbc86daf08f8f22157/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb#L90)에 의존한다는 것입니다. 컨트롤러 이름을 추측하기 위해 모델에 대해서는 아무것도 아니며 Inflector에 의존합니다. 사용자 정의 이름을 사용할 수 없습니다. 작은 문제는 다른 상황에서 동일한 모델을 관리하기 위해 다른 컨트롤러가 필요할 수 있다는 것입니다. – Alexey
당신은 이것을 위해 필요한 것을 보여줄 수 있습니까? 여러 발표자 클래스를 원하는 것처럼 보이지만 달성하려는 대상에 따라 과도 함일 수 있습니다. –