2012-01-18 1 views
45

Beh, so che non dovrebbe essere chiesto qui, ma non ho trovato un posto migliore per ottenere una risposta. Questa domanda è stata posta nel colloquio di una buona compagnia.Possiamo chiamare il metodo di un controllore da una vista (come chiamiamo idealmente dall'assistente)?

In Rails MVC, è possibile chiamare il metodo di un controller da una vista (come si chiama idealmente da un helper)? Se sì, come?

Non potevo rispondere a quella domanda quella volta. Aiuterebbe per favore?

+0

Vorrei solo chiedere è possibile o no ... Non dovrebbe essere fatto! –

risposta

113

ecco la risposta:

class MyController < ApplicationController 
    def my_method 
    # Lots of stuff 
    end 
    helper_method :my_method 
end 
+6

Ho già detto questo ... – Pavling

+6

come si chiama 'my_method' dalla vista? –

+4

<% = my_method%> o <% my_method%> – Laerte

9

Non hanno mai provato questo, ma chiamando metodi pubblici è simile a:

@controller.public_method 

e metodi privati:

@controller.send("private_method", args) 

Vedi i dettagli della here

5

rendere il vostro metodo di azione di supporto utilizzando helper_method :your_action_name

class ApplicationController < ActionController::Base 
    def foo 
    # your foo logic 
    end 
    helper_method :foo 

    def bar 
    # your bar logic 
    end 
    helper_method :bar 
end 

Oppure si può anche fare tutte le azioni come il tuo metodo di supporto utilizzando: helper :all

class ApplicationController < ActionController::Base 
    helper :all 

    def foo 
    # your foo logic 
    end 

    def bar 
    # your bar logic 
    end 
end 

In entrambi i casi, è possibile accedere a foo e bar da tutti i controller.