2016-09-04 2 views
0

어떻게이 코드를 리팩토링 할 수 있습니까?레일 : 변수를 사용하여 동적 경로를 리 팩터링 하시겠습니까?

case @fruit.actable_type 
      when "Apple" 
       redirect_to apple_path(@fruit.specific, :anchor => "comment_id_#{@comment.id}") 
      when "Orange" 
       redirect_to orange_path(@fruit.specific, :anchor => "comment_id_#{@comment.id}") 
      when "Banana" 
       redirect_to banana_path(@fruit.specific, :anchor => "comment_id_#{@comment.id}") 
      end 

가장 큰 문제는 난 그냥이 할 수없는, 즉 내가 경로를 포함 할 필요가 앵커를 지정하는 것입니다 :

redirect_to @fruit.specific, anchor: "whatever" 

나는 많은 것들을 시도,하지만 여전히 나는 리팩토링을 couldnn't 이 같은/

답변

2
path_method = "#{@fruit.actable_type.downcase}_path" 
anchor = "comment_id_{@comment.id}" 
redirect_to send(path_method, @fruit.specific, anchor: anchor) 
+0

고마워요! 그게 내가 필요한 것입니다. 메소드가이를 전송하는 것이 중요했습니다. – adriandelarco

2

무언가가 당신을 위해 작동합니다 : 것을

anchor = "comment_id_#{@comment.id}" 
prefix = @fruit.actable_type.downcase 
redirect_to send("#{prefix}_path", @fruit.specific, anchor: anchor) 
+0

감사합니다! 그게 내가 필요한 것입니다. 메소드가이를 전송하는 것이 중요했습니다. – adriandelarco