0

나는 다양한 모델의 객체 인 다양한 ActiveRecord 객체의 배열을 가지고 있습니다. team_path 나던 때문에 무슨 논리적 인 존재각 내포 된 ressource에 대한 링크

array.each do |element| 
    link_to element.name, element 
end 

그것은 오류가 발생합니다 :이 같은 array.each이를 사용할 때 그래서

resources :departments do 
    resources :teams 
end 

: 그 중 하나는 Department의 중첩 ressource입니다 Team라고 중첩 된 ressources의 경로는 department_team_path라고하지만 나는이 each 다른 모델의 Objets도 취급하기 때문에 절대이 방법을 호출 할 수 없습니다.

내가 볼 수있는 가능성 중 하나는 team_path whih가 팀 # 쇼를 지칭하는 루트를 추가하는 것이지만 SEO에는별로 좋지 않으며 나쁜 것도 아닙니다. 한 코스에서이 모델과 다른 모델을 연결할 수있는 또 다른 가능성이 있습니까?

답변

0

이 문제를 해결하기위한 자체 방법을 작성했습니다.

array.each do |element| 
    link_to element.name, nested_object(element) 
end 

그것은 지금 나를 위해 꽤 좋은 작품 ...

1

이 시도 : link_to element.name, url_for(element)

+0

아니이 나던 작업, 여전히 같은 오류 – davidb

+0

: 그들은 그래서 다음과 같은 작업을 수행 할 수 ApplicationHeler

def nested_name(object) routes = Rails.application.routes.named_routes.to_a name = nil routes.each do |r| name = r[0].to_s if r[1].requirements[:controller] == object.class.to_s.downcase.pluralize && r[1].requirements[:action] == "show" end name end def nested_object(object) name = nested_name(object) parent = name.gsub("_", "").gsub(object.class.to_s.downcase, "") if object.class.reflect_on_association(parent.to_sym) return [object.send(parent), object] else return object end end 

에 있습니다 이것을 시도해보십시오 (도움이되는지 말해주세요) : http://lostechies.com/joshuaflanagan/2012/03/27/a-smarter-rails-url_for-helper/ – ramigg

+0

그것은 영감을주었습니다. 그러나 나는 모든 정보가 사용할 수있는 나는 게시물에 같은 두 번째 시간 아래로 그들을 쓰고 싶지 않아. – davidb

1
array.each do |element| 
    if element.is_a?(Team) 
    link_to element.name, url_for([element.department, element]) 
    else 
    link_to element.name, element 
    end 
end 

Rails Guides에 따라. 또는 resources :departments, :shallow => true을 사용할 수 있지만 언급 한 것처럼 SEO에 바람직하지 않은 결과를 줄 수 있습니다.

+0

이 특별한 경우에는 작동하지만 원인을 밝히지는 못합니다. 나는 지금 내 자신의 방법을 썼다 ... 곧 게시 할 것이다. – davidb