2011-12-08 2 views
0

컨트롤러에 3 개의 사용자 정의 액션이 있으며, 이들 각각이 inherited_resources가 제공하는 리소스 객체를 사용하기를 기대하고있었습니다. 그러니까 기본적으로, 대신이와inherited_resources의 사용자 정의 액션

def cancel 
    @job.cancel! 
end 

def restart 
    @job.restart! 
end 

def start 
    @job.start! 
end 

문제가 @job이 전무을 제공 :

def cancel 
    @job = resource.cancel! 
end 

def restart 
    @job = resource.restart! 
end 

def start 
    @job = resource.start! 
end 

난 그냥가 있음을 건너 뛰려. 그래서 문서를 확인하고 사용자 지정 작업을 발견했습니다. 그래서 이것을 내 컨트롤러에 추가했습니다 :

custom_actions :resource => [:cancel, :start, :restart] 

그러나 @job은 여전히 ​​nil입니다. 또한 시도 :

actions :all 

IR에 모든 작업에 리소스를 적용하고 여전히 작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

3

는이 같은 전화를 포장해야합니다 :

def cancel 
    cancel! do 
    @job.cancel! 
    end 
end 

이 실행 한 다음 (이미 설정 한 자원과) 귀하의 블록에 제어를 양보하는 IR됩니다.

+1

아 .. 그렇다면 resource.cancel과 잘 맞을 것입니다. – corroded

관련 문제