2010-06-03 2 views
1

많은 연관이있는 모델이 있습니다.매개 변수가있는 링크 경로 생성

사용자 : has_many => : 게시물 : 비디오 : 이미지 등 내가 가지고

draw_chart user.videos 

def draw_chart(assoc) 
    assoc.each do |a| 
    link_to "update", [a.user, a], :method => :put, :remote => true, :confirm => 'orrly?' 
    end 
end 

문제 여기 협회 중 하나를 수신 도우미 방법에 추가 매개 변수를 보낼 수 있습니다 조치를 업데이트하십시오.

예를 들어,이 URL을 얻으려면 : /users/1/videos/2?status=done하지만 user_videos_path(video, :status => 'done') 대신 [a.user, a]을 사용하는 동안 이것을 실현하는 방법을 혼란 스럽습니다. 그러나 나는까지 생각할 수

답변

3

를 찾습니다 나는이 평가 절을 사용하지 않을 것이다.

<%= link_to('update', self.send("user_#{a.class.name.pluralize}_path", a, , :status => 'done'), :method => :put, :remote => true, :confirm => 'orrly?') %> 
+0

이것이 좋은 방법이지만 (multipleize의 tableize istead 나 underscore.pluralize를 사용해야한다). 그러나 여기에 또 다른 문제 (내 솔루션에서와 같이)가 적절하지 않게되었다 :'/users/1/videos.8? status = done'. 이 __dot__ 내가 찾고있는 뭔가가 아닙니다 :) – fl00r

+0

완전히 tableize 부분에 동의하지만 전혀 .8 – nas

+0

경로입니다'self.send ("user _ # {a.class.name.tableize _path", a. user, a, : status => 'done')'이 결과는이 이상한 점입니다. – fl00r

1

유일한 해결책이 이상한 하나 하나 동영상 또는 이미지 또는 아무것도 할 수 있기 때문에 나는 마지막으로 사용할 수 없습니다

link_to "update", eval("user_#{a.class.name.tableize}_path(#{a.school.id}, #{a.id}, :status => 'done')"), :method => :put, :remote => true, :confirm => 'orrly?' 

을하지만이 지저분