2016-05-17 9 views

Antwort

0

TL; DR: es gibt keinen Weg.

around_action ist nichts anderes als ein aspect um den Aufruf der Methode gewickelt wird. Das heißt, es wird in der Kette von Methoden verknüpft werden, die von Schienen für diesen Controller aufgerufen werden. In Pseudo-Code:

around_action only: [:follow] { puts 'around' } 

ist mehr oder weniger das gleiche wie:

def follow 
    puts 'around' 
    # .... the code of follow method 
    puts 'around' 
end 

Wer Sie nehme ich es den Parameter übergeben?

Der Code, den Sie hat mehr Störungen zur Verfügung gestellt: set_follow_sourceyield für block_given? ohne Prüfung ruft, und der Block in der Tat war nicht gegeben, die in LocalJumpError Fehler führen zu werfen.

Der Parameter, den Sie übergeben möchten, ist eine Controller-Instanzvariable, auf die von jeder Methode innerhalb dieses Controllers aus problemlos zugegriffen werden kann. Warum sollten Sie es als Parameter übergeben?

Ich denke, Sie sollten überlegen, was Sie erreichen wollten.

0

Eigentlich nimmt es bereits einige Argumente, Sie Controller-Instanz als Argument in dem Aktionsfilter Rückruf zugreifen können, wie folgt aus:

around_action only: [:follow] do |controller, block| 
    controller.send(:any_method); 
    block.call # or yield 
end 

sieht aus wie es okay ist, diese Art von Dingen in Rails zu tun, Sie können ähnliches Beispiel in Rails docs paragraph 8.2

finden